PARTE 1 DE LA ENTREGA¶

Part 1. Cargamos los datos porporcionados por Alberto¶

In [1]:
!pip install gdown
!gdown https://drive.google.com/uc?id=1hrHgANwgC8VyXLhXgxLYHTrILpeJ5bLl
!unzip /content/mars_and_moon.zip
Requirement already satisfied: gdown in /usr/local/lib/python3.10/dist-packages (4.6.6)
Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from gdown) (3.13.1)
Requirement already satisfied: requests[socks] in /usr/local/lib/python3.10/dist-packages (from gdown) (2.31.0)
Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from gdown) (1.16.0)
Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from gdown) (4.66.1)
Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.10/dist-packages (from gdown) (4.11.2)
Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.10/dist-packages (from beautifulsoup4->gdown) (2.5)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests[socks]->gdown) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests[socks]->gdown) (3.4)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests[socks]->gdown) (2.0.7)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests[socks]->gdown) (2023.7.22)
Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /usr/local/lib/python3.10/dist-packages (from requests[socks]->gdown) (1.7.1)
Downloading...
From: https://drive.google.com/uc?id=1hrHgANwgC8VyXLhXgxLYHTrILpeJ5bLl
To: /content/mars_and_moon.zip
100% 77.6M/77.6M [00:01<00:00, 56.1MB/s]
Archive:  /content/mars_and_moon.zip
  inflating: best.pt                 
  inflating: craters/test/images/010_png.rf.fcf5e274562ee69a325f9d7a0b30767f.jpg  
  inflating: craters/test/images/015_png.rf.7d5b2091b6339c9480a171a59c52c3b9.jpg  
  inflating: craters/test/images/019_png.rf.1930cd277f9bf0e3fa57f2dcfee0385f.jpg  
  inflating: craters/test/images/04_png.rf.81a7d6cbeb9dc09e5a8ecd40e185fc92.jpg  
  inflating: craters/test/images/mars_crater--100-_jpg.rf.a2ad5867efb2d73e86d9d980ca40a9fe.jpg  
  inflating: craters/test/images/mars_crater--108-_jpg.rf.9395f473f249e064dbfea078e2519a17.jpg  
  inflating: craters/test/images/mars_crater--116-_jpg.rf.2e550a693a8800808e68848484716b95.jpg  
  inflating: craters/test/images/mars_crater--117-_jpg.rf.b412b6593d102c5f9dda7bce79bb815c.jpg  
  inflating: craters/test/images/mars_crater--12-_jpg.rf.26060e7ca4ca8781bcaf011b9b70b7db.jpg  
  inflating: craters/test/images/mars_crater--25-_jpg.rf.a06bfa24b404b064ead471f56d636e0e.jpg  
  inflating: craters/test/images/mars_crater--31-_jpg.rf.5030dfd316db1570d5f2ad396fa87d4d.jpg  
  inflating: craters/test/images/mars_crater--32-_jpg.rf.2f0302a2f32a7b05f5c55e3dac97f1ea.jpg  
  inflating: craters/test/images/mars_crater--33-_jpg.rf.baf9c7be01ba1f4b954e0e5be0560c80.jpg  
  inflating: craters/test/images/mars_crater--46-_jpg.rf.369e88a43859f97a595d2091746600f4.jpg  
  inflating: craters/test/images/mars_crater--51-_jpg.rf.2f21cd1782f9da8bb8f1ada8efa134a7.jpg  
  inflating: craters/test/images/mars_crater--60-_jpg.rf.df89b1f82e171f73f5402c29b6637aa8.jpg  
  inflating: craters/test/images/mars_crater--65-_jpg.rf.34ab64f1f6ce5a4b360ea66eae77d4b9.jpg  
  inflating: craters/test/images/mars_crater--66-_jpg.rf.85564f58f27e684c94c8a0e484cc289e.jpg  
  inflating: craters/test/images/mars_crater--97-_jpg.rf.63347c2ec963cf5c4ab641e1ba872df1.jpg  
  inflating: craters/test/labels/010_png.rf.fcf5e274562ee69a325f9d7a0b30767f.txt  
  inflating: craters/test/labels/015_png.rf.7d5b2091b6339c9480a171a59c52c3b9.txt  
  inflating: craters/test/labels/019_png.rf.1930cd277f9bf0e3fa57f2dcfee0385f.txt  
  inflating: craters/test/labels/04_png.rf.81a7d6cbeb9dc09e5a8ecd40e185fc92.txt  
  inflating: craters/test/labels/mars_crater--100-_jpg.rf.a2ad5867efb2d73e86d9d980ca40a9fe.txt  
  inflating: craters/test/labels/mars_crater--108-_jpg.rf.9395f473f249e064dbfea078e2519a17.txt  
  inflating: craters/test/labels/mars_crater--116-_jpg.rf.2e550a693a8800808e68848484716b95.txt  
  inflating: craters/test/labels/mars_crater--117-_jpg.rf.b412b6593d102c5f9dda7bce79bb815c.txt  
  inflating: craters/test/labels/mars_crater--12-_jpg.rf.26060e7ca4ca8781bcaf011b9b70b7db.txt  
  inflating: craters/test/labels/mars_crater--25-_jpg.rf.a06bfa24b404b064ead471f56d636e0e.txt  
  inflating: craters/test/labels/mars_crater--31-_jpg.rf.5030dfd316db1570d5f2ad396fa87d4d.txt  
  inflating: craters/test/labels/mars_crater--32-_jpg.rf.2f0302a2f32a7b05f5c55e3dac97f1ea.txt  
  inflating: craters/test/labels/mars_crater--33-_jpg.rf.baf9c7be01ba1f4b954e0e5be0560c80.txt  
  inflating: craters/test/labels/mars_crater--46-_jpg.rf.369e88a43859f97a595d2091746600f4.txt  
  inflating: craters/test/labels/mars_crater--51-_jpg.rf.2f21cd1782f9da8bb8f1ada8efa134a7.txt  
  inflating: craters/test/labels/mars_crater--60-_jpg.rf.df89b1f82e171f73f5402c29b6637aa8.txt  
  inflating: craters/test/labels/mars_crater--65-_jpg.rf.34ab64f1f6ce5a4b360ea66eae77d4b9.txt  
  inflating: craters/test/labels/mars_crater--66-_jpg.rf.85564f58f27e684c94c8a0e484cc289e.txt  
  inflating: craters/test/labels/mars_crater--97-_jpg.rf.63347c2ec963cf5c4ab641e1ba872df1.txt  
  inflating: craters/train/images/011_png.rf.8ac312b4898f0106d10b76952a55d237.jpg  
  inflating: craters/train/images/012_png.rf.64da6ff4c62638096ee6e5bf689706bc.jpg  
  inflating: craters/train/images/013_png.rf.ee44d5aa33fd33a1ed62ae233180f505.jpg  
  inflating: craters/train/images/016_png.rf.1973f9540ae7f672257609a8e5721ab3.jpg  
  inflating: craters/train/images/017_png.rf.1504c0d3ecbf20af6bc5114ca197a0dd.jpg  
  inflating: craters/train/images/018_png.rf.2d4eed5581681fe83830e51634befdaf.jpg  
  inflating: craters/train/images/01_png.rf.4d2ebc5ed98ad1e69d667aadbce63d53.jpg  
  inflating: craters/train/images/020_png.rf.ce87f4889d7441275135633392f98ed7.jpg  
  inflating: craters/train/images/022_png.rf.00ae4e655a2774bada1e254641482935.jpg  
  inflating: craters/train/images/02_png.rf.610687947e4c92f77e6462104ec4b924.jpg  
  inflating: craters/train/images/03_png.rf.8f7b31e14642026833b7c0dcd1832862.jpg  
  inflating: craters/train/images/05_png.rf.844343145246e51e66a345419e1862bf.jpg  
  inflating: craters/train/images/06_png.rf.aaf8c66b9e4d5e99a3dc70bae7f62c07.jpg  
  inflating: craters/train/images/07_png.rf.3fba5e95c6827aa6c4132e70f2086555.jpg  
  inflating: craters/train/images/08_png.rf.944efdd0f108140b368d7ad2c37426df.jpg  
  inflating: craters/train/images/09_png.rf.3b796e77a5f0036af4cd4413fcbe07a5.jpg  
  inflating: craters/train/images/mars_crater--0-_jpg.rf.40c1dec94c66ab07d9da8c74fa58d6f8.jpg  
  inflating: craters/train/images/mars_crater--10-_jpg.rf.585b1aa305997e3055e86fcac72a806b.jpg  
  inflating: craters/train/images/mars_crater--101-_jpg.rf.8f4eb1c77ab9e64d2fd691a6e0fcd3ec.jpg  
  inflating: craters/train/images/mars_crater--102-_jpg.rf.9cdbcc724e2e7baf5c5c17aed91c769b.jpg  
  inflating: craters/train/images/mars_crater--103-_jpg.rf.61597458910fb0eed55b415c9cbac3bf.jpg  
  inflating: craters/train/images/mars_crater--105-_jpg.rf.338dccc756e50430460dfb6f6191d1c5.jpg  
  inflating: craters/train/images/mars_crater--106-_jpg.rf.05aa3dbbbdc9651cb8c51d26c2847805.jpg  
  inflating: craters/train/images/mars_crater--109-_jpg.rf.29afc1137114a2b872f484326254e949.jpg  
  inflating: craters/train/images/mars_crater--11-_jpg.rf.9e8de286e3d84938f34bb6bf35825343.jpg  
  inflating: craters/train/images/mars_crater--110-_jpg.rf.593f6a3d9aed98e7a08955e700765222.jpg  
  inflating: craters/train/images/mars_crater--111-_jpg.rf.215f88d6bd7a6d86560754be694fc2f3.jpg  
  inflating: craters/train/images/mars_crater--113-_jpg.rf.a7713d55de03a1a7487429d414e1005c.jpg  
  inflating: craters/train/images/mars_crater--118-_jpg.rf.0a8b3fb0e1332e576901e596ad55e30a.jpg  
  inflating: craters/train/images/mars_crater--119-_jpg.rf.5cd500a3dcc977038a875b5115f9eda4.jpg  
  inflating: craters/train/images/mars_crater--120-_jpg.rf.a870131b0b5974e8351a32ade2d5f0f3.jpg  
  inflating: craters/train/images/mars_crater--14-_jpg.rf.e050bff73578e2a9ad30e339b898f839.jpg  
  inflating: craters/train/images/mars_crater--15-_jpg.rf.c669035a909b835be84fa4fc67bf3f40.jpg  
  inflating: craters/train/images/mars_crater--16-_jpg.rf.bf5f6796b4ec5d351b47efae2e866934.jpg  
  inflating: craters/train/images/mars_crater--17-_jpg.rf.c051d4c804f2fed2aa32999cc9fd0b48.jpg  
  inflating: craters/train/images/mars_crater--18-_jpg.rf.8214037c811619bbe37024a557c9251f.jpg  
  inflating: craters/train/images/mars_crater--19-_jpg.rf.a9e7485a270816a553c3d7e0c3fddd30.jpg  
  inflating: craters/train/images/mars_crater--2-_jpg.rf.a65bb7ee68968509ac0b28df75e1f251.jpg  
  inflating: craters/train/images/mars_crater--20-_jpg.rf.cb4c2603f4a62bbe96328c29cec6d68e.jpg  
  inflating: craters/train/images/mars_crater--21-_jpg.rf.63688e718106a9b061bb702a298e7a54.jpg  
  inflating: craters/train/images/mars_crater--22-_jpg.rf.3ed23daa3923c22a459593cb449a7336.jpg  
  inflating: craters/train/images/mars_crater--24-_jpg.rf.4614bb6844fda70ea8a3b4f515cb7e8f.jpg  
  inflating: craters/train/images/mars_crater--26-_jpg.rf.e34074ddcd6c44fa17b7a7689f7ddfa4.jpg  
  inflating: craters/train/images/mars_crater--27-_jpg.rf.158fc0c6a694bba2f0afa44fd76a7f5a.jpg  
  inflating: craters/train/images/mars_crater--3-_jpg.rf.17bb27df5c5e6a501f790342675bc145.jpg  
  inflating: craters/train/images/mars_crater--30-_jpg.rf.0fb68bf5aece1859bc5f080e66b4fef1.jpg  
  inflating: craters/train/images/mars_crater--34-_jpg.rf.5617051b3d6a801330f8d4f7df9e3239.jpg  
  inflating: craters/train/images/mars_crater--35-_jpg.rf.826bc4b2a3a69c48144834f40d92439f.jpg  
  inflating: craters/train/images/mars_crater--36-_jpg.rf.0100a780ad4217b29c2dc9b46deec040.jpg  
  inflating: craters/train/images/mars_crater--37-_jpg.rf.c2a35d9de333416eb4d6d8f0d6b3310a.jpg  
  inflating: craters/train/images/mars_crater--38-_jpg.rf.e6f3636efb075ba61dafa478e6b21de2.jpg  
  inflating: craters/train/images/mars_crater--39-_jpg.rf.dbcaca888781a42f7bb3ce2c922da228.jpg  
  inflating: craters/train/images/mars_crater--4-_jpg.rf.b31f215c27d917bdb7c7c545db2bc36b.jpg  
  inflating: craters/train/images/mars_crater--41-_jpg.rf.5b367c681ccf0dfa9c5fddf287926d83.jpg  
  inflating: craters/train/images/mars_crater--42-_jpg.rf.0cea1f9d9cf45fb141abf4e9aaae4c84.jpg  
  inflating: craters/train/images/mars_crater--43-_jpg.rf.27ea7a65603205e491bc439c1d654cf4.jpg  
  inflating: craters/train/images/mars_crater--44-_jpg.rf.627a604f51a4479d1f1660c5cf2af5c4.jpg  
  inflating: craters/train/images/mars_crater--45-_jpg.rf.d69fa5e159ad8e5fe17b96deaba99c18.jpg  
  inflating: craters/train/images/mars_crater--48-_jpg.rf.cc5528a8dcf4a11085a0a01d5c9084bc.jpg  
  inflating: craters/train/images/mars_crater--49-_jpg.rf.5ea4703986c80bcfa03f0f99e4067c6f.jpg  
  inflating: craters/train/images/mars_crater--5-_jpg.rf.6acb650edc64d6e1a02a0eef00e95113.jpg  
  inflating: craters/train/images/mars_crater--50-_jpg.rf.02be16d199897982df8e6ea8f3e5818f.jpg  
  inflating: craters/train/images/mars_crater--52-_jpg.rf.1a227f21c518775052f847053022cd86.jpg  
  inflating: craters/train/images/mars_crater--53-_jpg.rf.20acc76fad4fecd456d4b0e77c9bbbb1.jpg  
  inflating: craters/train/images/mars_crater--54-_jpg.rf.2313c9f439999313bfb527534bbdc501.jpg  
  inflating: craters/train/images/mars_crater--55-_jpg.rf.452ea46e23156b2c86433eb9054b1a6a.jpg  
  inflating: craters/train/images/mars_crater--56-_jpg.rf.6f0dcbff4ea66014aef178b840d29238.jpg  
  inflating: craters/train/images/mars_crater--57-_jpg.rf.a783aaeaf00ae5d57bec64438050285f.jpg  
  inflating: craters/train/images/mars_crater--58-_jpg.rf.d668b2f63bd183cb629754db3ff6cf1f.jpg  
  inflating: craters/train/images/mars_crater--59-_jpg.rf.4f609e19d4f7f9987f696183edd87e99.jpg  
  inflating: craters/train/images/mars_crater--6-_jpg.rf.ebff635e74e807f0377c656009482d1c.jpg  
  inflating: craters/train/images/mars_crater--61-_jpg.rf.1398b749af6c18cf177cc97396129bd0.jpg  
  inflating: craters/train/images/mars_crater--62-_jpg.rf.18dd7779b62fb78d5f07060fec32079d.jpg  
  inflating: craters/train/images/mars_crater--68-_jpg.rf.e503921bd751aed3cfd662cda03ab6b6.jpg  
  inflating: craters/train/images/mars_crater--69-_jpg.rf.8677e1c58b60bd19c197032d3e749cda.jpg  
  inflating: craters/train/images/mars_crater--7-_jpg.rf.84b2a78c125aa0230712626eb381a2b4.jpg  
  inflating: craters/train/images/mars_crater--70-_jpg.rf.30c918cda3fcb18a9ff9ce047e0a93a0.jpg  
  inflating: craters/train/images/mars_crater--71-_jpg.rf.3370d6bdc02cbe6643f7509228f2ee10.jpg  
  inflating: craters/train/images/mars_crater--74-_jpg.rf.259a2b0955c98b2b468d63917ae13796.jpg  
  inflating: craters/train/images/mars_crater--75-_jpg.rf.210df1cf8ebc1b962b63621720ecf926.jpg  
  inflating: craters/train/images/mars_crater--76-_jpg.rf.050c14a337ce70de3519fe6049640831.jpg  
  inflating: craters/train/images/mars_crater--77-_jpg.rf.64732a16676a6c3222f67571cf1d6618.jpg  
  inflating: craters/train/images/mars_crater--78-_jpg.rf.d960fe84ae55c6b91be086d8e8a8ed32.jpg  
  inflating: craters/train/images/mars_crater--8-_jpg.rf.85af0fa193ad2d5b0087dc48ec7341c6.jpg  
  inflating: craters/train/images/mars_crater--80-_jpg.rf.55cff0d5b6e2587b15ba97e5f6a3a5f5.jpg  
  inflating: craters/train/images/mars_crater--81-_jpg.rf.147703ba93a36a6a753992752f0a1789.jpg  
  inflating: craters/train/images/mars_crater--82-_jpg.rf.c3ba3759df63259b6ba3df175475d3ce.jpg  
  inflating: craters/train/images/mars_crater--83-_jpg.rf.3a468d2f7715d1cf73d5a31d385e0c34.jpg  
  inflating: craters/train/images/mars_crater--84-_jpg.rf.dcfe6c285ac885441a1c95d818b188e1.jpg  
  inflating: craters/train/images/mars_crater--85-_jpg.rf.344998b46a84deb2b8802cdae98c5282.jpg  
  inflating: craters/train/images/mars_crater--86-_jpg.rf.81699898067809e7560109fb72a56670.jpg  
  inflating: craters/train/images/mars_crater--87-_jpg.rf.649d603d5617ce66e4a9420539fbfebb.jpg  
  inflating: craters/train/images/mars_crater--88-_jpg.rf.2f3b851dec48a94bfccc6519b4a45859.jpg  
  inflating: craters/train/images/mars_crater--9-_jpg.rf.64378015a647ef92689e24ea103644cd.jpg  
  inflating: craters/train/images/mars_crater--93-_jpg.rf.7426ac666cec74a8b0bc15d550b8699b.jpg  
  inflating: craters/train/images/mars_crater--94-_jpg.rf.a1d59711147871b0498b03c2042c7b56.jpg  
  inflating: craters/train/images/mars_crater--96-_jpg.rf.6dca8e5264f81785f8d718f92f9e4475.jpg  
  inflating: craters/train/images/mars_crater--99-_jpg.rf.09682f4dbe2f52ffe890061454306153.jpg  
  inflating: craters/train/labels.cache  
  inflating: craters/train/labels/011_png.rf.8ac312b4898f0106d10b76952a55d237.txt  
  inflating: craters/train/labels/012_png.rf.64da6ff4c62638096ee6e5bf689706bc.txt  
  inflating: craters/train/labels/013_png.rf.ee44d5aa33fd33a1ed62ae233180f505.txt  
  inflating: craters/train/labels/016_png.rf.1973f9540ae7f672257609a8e5721ab3.txt  
  inflating: craters/train/labels/017_png.rf.1504c0d3ecbf20af6bc5114ca197a0dd.txt  
  inflating: craters/train/labels/018_png.rf.2d4eed5581681fe83830e51634befdaf.txt  
  inflating: craters/train/labels/01_png.rf.4d2ebc5ed98ad1e69d667aadbce63d53.txt  
  inflating: craters/train/labels/020_png.rf.ce87f4889d7441275135633392f98ed7.txt  
  inflating: craters/train/labels/022_png.rf.00ae4e655a2774bada1e254641482935.txt  
  inflating: craters/train/labels/02_png.rf.610687947e4c92f77e6462104ec4b924.txt  
  inflating: craters/train/labels/03_png.rf.8f7b31e14642026833b7c0dcd1832862.txt  
  inflating: craters/train/labels/05_png.rf.844343145246e51e66a345419e1862bf.txt  
  inflating: craters/train/labels/06_png.rf.aaf8c66b9e4d5e99a3dc70bae7f62c07.txt  
  inflating: craters/train/labels/07_png.rf.3fba5e95c6827aa6c4132e70f2086555.txt  
  inflating: craters/train/labels/08_png.rf.944efdd0f108140b368d7ad2c37426df.txt  
  inflating: craters/train/labels/09_png.rf.3b796e77a5f0036af4cd4413fcbe07a5.txt  
  inflating: craters/train/labels/mars_crater--0-_jpg.rf.40c1dec94c66ab07d9da8c74fa58d6f8.txt  
  inflating: craters/train/labels/mars_crater--10-_jpg.rf.585b1aa305997e3055e86fcac72a806b.txt  
  inflating: craters/train/labels/mars_crater--101-_jpg.rf.8f4eb1c77ab9e64d2fd691a6e0fcd3ec.txt  
  inflating: craters/train/labels/mars_crater--102-_jpg.rf.9cdbcc724e2e7baf5c5c17aed91c769b.txt  
  inflating: craters/train/labels/mars_crater--103-_jpg.rf.61597458910fb0eed55b415c9cbac3bf.txt  
  inflating: craters/train/labels/mars_crater--105-_jpg.rf.338dccc756e50430460dfb6f6191d1c5.txt  
  inflating: craters/train/labels/mars_crater--106-_jpg.rf.05aa3dbbbdc9651cb8c51d26c2847805.txt  
  inflating: craters/train/labels/mars_crater--109-_jpg.rf.29afc1137114a2b872f484326254e949.txt  
  inflating: craters/train/labels/mars_crater--11-_jpg.rf.9e8de286e3d84938f34bb6bf35825343.txt  
  inflating: craters/train/labels/mars_crater--110-_jpg.rf.593f6a3d9aed98e7a08955e700765222.txt  
  inflating: craters/train/labels/mars_crater--111-_jpg.rf.215f88d6bd7a6d86560754be694fc2f3.txt  
  inflating: craters/train/labels/mars_crater--113-_jpg.rf.a7713d55de03a1a7487429d414e1005c.txt  
  inflating: craters/train/labels/mars_crater--118-_jpg.rf.0a8b3fb0e1332e576901e596ad55e30a.txt  
  inflating: craters/train/labels/mars_crater--119-_jpg.rf.5cd500a3dcc977038a875b5115f9eda4.txt  
  inflating: craters/train/labels/mars_crater--120-_jpg.rf.a870131b0b5974e8351a32ade2d5f0f3.txt  
  inflating: craters/train/labels/mars_crater--14-_jpg.rf.e050bff73578e2a9ad30e339b898f839.txt  
  inflating: craters/train/labels/mars_crater--15-_jpg.rf.c669035a909b835be84fa4fc67bf3f40.txt  
  inflating: craters/train/labels/mars_crater--16-_jpg.rf.bf5f6796b4ec5d351b47efae2e866934.txt  
  inflating: craters/train/labels/mars_crater--17-_jpg.rf.c051d4c804f2fed2aa32999cc9fd0b48.txt  
  inflating: craters/train/labels/mars_crater--18-_jpg.rf.8214037c811619bbe37024a557c9251f.txt  
  inflating: craters/train/labels/mars_crater--19-_jpg.rf.a9e7485a270816a553c3d7e0c3fddd30.txt  
  inflating: craters/train/labels/mars_crater--2-_jpg.rf.a65bb7ee68968509ac0b28df75e1f251.txt  
  inflating: craters/train/labels/mars_crater--20-_jpg.rf.cb4c2603f4a62bbe96328c29cec6d68e.txt  
  inflating: craters/train/labels/mars_crater--21-_jpg.rf.63688e718106a9b061bb702a298e7a54.txt  
  inflating: craters/train/labels/mars_crater--22-_jpg.rf.3ed23daa3923c22a459593cb449a7336.txt  
  inflating: craters/train/labels/mars_crater--24-_jpg.rf.4614bb6844fda70ea8a3b4f515cb7e8f.txt  
  inflating: craters/train/labels/mars_crater--26-_jpg.rf.e34074ddcd6c44fa17b7a7689f7ddfa4.txt  
  inflating: craters/train/labels/mars_crater--27-_jpg.rf.158fc0c6a694bba2f0afa44fd76a7f5a.txt  
  inflating: craters/train/labels/mars_crater--3-_jpg.rf.17bb27df5c5e6a501f790342675bc145.txt  
  inflating: craters/train/labels/mars_crater--30-_jpg.rf.0fb68bf5aece1859bc5f080e66b4fef1.txt  
  inflating: craters/train/labels/mars_crater--34-_jpg.rf.5617051b3d6a801330f8d4f7df9e3239.txt  
  inflating: craters/train/labels/mars_crater--35-_jpg.rf.826bc4b2a3a69c48144834f40d92439f.txt  
  inflating: craters/train/labels/mars_crater--36-_jpg.rf.0100a780ad4217b29c2dc9b46deec040.txt  
  inflating: craters/train/labels/mars_crater--37-_jpg.rf.c2a35d9de333416eb4d6d8f0d6b3310a.txt  
  inflating: craters/train/labels/mars_crater--38-_jpg.rf.e6f3636efb075ba61dafa478e6b21de2.txt  
  inflating: craters/train/labels/mars_crater--39-_jpg.rf.dbcaca888781a42f7bb3ce2c922da228.txt  
  inflating: craters/train/labels/mars_crater--4-_jpg.rf.b31f215c27d917bdb7c7c545db2bc36b.txt  
  inflating: craters/train/labels/mars_crater--41-_jpg.rf.5b367c681ccf0dfa9c5fddf287926d83.txt  
  inflating: craters/train/labels/mars_crater--42-_jpg.rf.0cea1f9d9cf45fb141abf4e9aaae4c84.txt  
  inflating: craters/train/labels/mars_crater--43-_jpg.rf.27ea7a65603205e491bc439c1d654cf4.txt  
  inflating: craters/train/labels/mars_crater--44-_jpg.rf.627a604f51a4479d1f1660c5cf2af5c4.txt  
  inflating: craters/train/labels/mars_crater--45-_jpg.rf.d69fa5e159ad8e5fe17b96deaba99c18.txt  
  inflating: craters/train/labels/mars_crater--48-_jpg.rf.cc5528a8dcf4a11085a0a01d5c9084bc.txt  
  inflating: craters/train/labels/mars_crater--49-_jpg.rf.5ea4703986c80bcfa03f0f99e4067c6f.txt  
  inflating: craters/train/labels/mars_crater--5-_jpg.rf.6acb650edc64d6e1a02a0eef00e95113.txt  
  inflating: craters/train/labels/mars_crater--50-_jpg.rf.02be16d199897982df8e6ea8f3e5818f.txt  
  inflating: craters/train/labels/mars_crater--52-_jpg.rf.1a227f21c518775052f847053022cd86.txt  
  inflating: craters/train/labels/mars_crater--53-_jpg.rf.20acc76fad4fecd456d4b0e77c9bbbb1.txt  
  inflating: craters/train/labels/mars_crater--54-_jpg.rf.2313c9f439999313bfb527534bbdc501.txt  
  inflating: craters/train/labels/mars_crater--55-_jpg.rf.452ea46e23156b2c86433eb9054b1a6a.txt  
  inflating: craters/train/labels/mars_crater--56-_jpg.rf.6f0dcbff4ea66014aef178b840d29238.txt  
  inflating: craters/train/labels/mars_crater--57-_jpg.rf.a783aaeaf00ae5d57bec64438050285f.txt  
  inflating: craters/train/labels/mars_crater--58-_jpg.rf.d668b2f63bd183cb629754db3ff6cf1f.txt  
  inflating: craters/train/labels/mars_crater--59-_jpg.rf.4f609e19d4f7f9987f696183edd87e99.txt  
  inflating: craters/train/labels/mars_crater--6-_jpg.rf.ebff635e74e807f0377c656009482d1c.txt  
  inflating: craters/train/labels/mars_crater--61-_jpg.rf.1398b749af6c18cf177cc97396129bd0.txt  
  inflating: craters/train/labels/mars_crater--62-_jpg.rf.18dd7779b62fb78d5f07060fec32079d.txt  
  inflating: craters/train/labels/mars_crater--68-_jpg.rf.e503921bd751aed3cfd662cda03ab6b6.txt  
  inflating: craters/train/labels/mars_crater--69-_jpg.rf.8677e1c58b60bd19c197032d3e749cda.txt  
  inflating: craters/train/labels/mars_crater--7-_jpg.rf.84b2a78c125aa0230712626eb381a2b4.txt  
  inflating: craters/train/labels/mars_crater--70-_jpg.rf.30c918cda3fcb18a9ff9ce047e0a93a0.txt  
  inflating: craters/train/labels/mars_crater--71-_jpg.rf.3370d6bdc02cbe6643f7509228f2ee10.txt  
  inflating: craters/train/labels/mars_crater--74-_jpg.rf.259a2b0955c98b2b468d63917ae13796.txt  
  inflating: craters/train/labels/mars_crater--75-_jpg.rf.210df1cf8ebc1b962b63621720ecf926.txt  
  inflating: craters/train/labels/mars_crater--76-_jpg.rf.050c14a337ce70de3519fe6049640831.txt  
  inflating: craters/train/labels/mars_crater--77-_jpg.rf.64732a16676a6c3222f67571cf1d6618.txt  
  inflating: craters/train/labels/mars_crater--78-_jpg.rf.d960fe84ae55c6b91be086d8e8a8ed32.txt  
  inflating: craters/train/labels/mars_crater--8-_jpg.rf.85af0fa193ad2d5b0087dc48ec7341c6.txt  
  inflating: craters/train/labels/mars_crater--80-_jpg.rf.55cff0d5b6e2587b15ba97e5f6a3a5f5.txt  
  inflating: craters/train/labels/mars_crater--81-_jpg.rf.147703ba93a36a6a753992752f0a1789.txt  
  inflating: craters/train/labels/mars_crater--82-_jpg.rf.c3ba3759df63259b6ba3df175475d3ce.txt  
  inflating: craters/train/labels/mars_crater--83-_jpg.rf.3a468d2f7715d1cf73d5a31d385e0c34.txt  
  inflating: craters/train/labels/mars_crater--84-_jpg.rf.dcfe6c285ac885441a1c95d818b188e1.txt  
  inflating: craters/train/labels/mars_crater--85-_jpg.rf.344998b46a84deb2b8802cdae98c5282.txt  
  inflating: craters/train/labels/mars_crater--86-_jpg.rf.81699898067809e7560109fb72a56670.txt  
  inflating: craters/train/labels/mars_crater--87-_jpg.rf.649d603d5617ce66e4a9420539fbfebb.txt  
  inflating: craters/train/labels/mars_crater--88-_jpg.rf.2f3b851dec48a94bfccc6519b4a45859.txt  
  inflating: craters/train/labels/mars_crater--9-_jpg.rf.64378015a647ef92689e24ea103644cd.txt  
  inflating: craters/train/labels/mars_crater--93-_jpg.rf.7426ac666cec74a8b0bc15d550b8699b.txt  
  inflating: craters/train/labels/mars_crater--94-_jpg.rf.a1d59711147871b0498b03c2042c7b56.txt  
  inflating: craters/train/labels/mars_crater--96-_jpg.rf.6dca8e5264f81785f8d718f92f9e4475.txt  
  inflating: craters/train/labels/mars_crater--99-_jpg.rf.09682f4dbe2f52ffe890061454306153.txt  
  inflating: craters/valid/images/014_png.rf.6b86c8afeb3ebca92872fd966d076adc.jpg  
  inflating: craters/valid/images/021_png.rf.575e0f1cb87a2cc439172de15816c2cc.jpg  
  inflating: craters/valid/images/023_png.rf.0a3106bdcc8e64bba283f961db77c9ec.jpg  
  inflating: craters/valid/images/024_png.rf.be24000681f4f356e2a027fb7ca0c552.jpg  
  inflating: craters/valid/images/mars_crater--1-_png.rf.f1b399f95708fd0ce520f23c9944ed44.jpg  
  inflating: craters/valid/images/mars_crater--104-_jpg.rf.2ff6036b976ac6bbba612dd48f144d4d.jpg  
  inflating: craters/valid/images/mars_crater--107-_jpg.rf.eb0f7061ed8c8af8be0e8af6b97226b0.jpg  
  inflating: craters/valid/images/mars_crater--115-_jpg.rf.8b1bf8c37395c894e88e543ccb4cc42f.jpg  
  inflating: craters/valid/images/mars_crater--13-_jpg.rf.f6fc01f728dfec8b32ad59d696a1a08d.jpg  
  inflating: craters/valid/images/mars_crater--2-_png.rf.08b565c861e9ac03e3cd1f9b0a6cddbe.jpg  
  inflating: craters/valid/images/mars_crater--23-_jpg.rf.ab2b0f47006c0c17260c312215dcfb88.jpg  
  inflating: craters/valid/images/mars_crater--28-_jpg.rf.8a4c9991d6739123bd0cbf018ea6f50d.jpg  
  inflating: craters/valid/images/mars_crater--29-_jpg.rf.719ff6d6c1aafd71147c173f7d224018.jpg  
  inflating: craters/valid/images/mars_crater--40-_jpg.rf.29e123c14a95b2e0fcdc93e9e8cff902.jpg  
  inflating: craters/valid/images/mars_crater--47-_jpg.rf.63eed086b1d39dc52405a398229dc586.jpg  
  inflating: craters/valid/images/mars_crater--63-_jpg.rf.ab0440022651f886c68744a55eb215d9.jpg  
  inflating: craters/valid/images/mars_crater--64-_jpg.rf.fd0838698f86dd546cdfcfea987b98b2.jpg  
  inflating: craters/valid/images/mars_crater--67-_jpg.rf.cf856f9fde7eb10f7f1524ebb0024502.jpg  
  inflating: craters/valid/images/mars_crater--72-_jpg.rf.4e01fbde7746b57082310e11b1ff03e2.jpg  
  inflating: craters/valid/images/mars_crater--73-_jpg.rf.91d7dc2cc9ae2d5dee41207d8992c3b3.jpg  
  inflating: craters/valid/images/mars_crater--79-_jpg.rf.984de20cb547cf4ee0324ebbf3fb7a88.jpg  
  inflating: craters/valid/images/mars_crater--89-_jpg.rf.a57ed45379b066a537e1203ac9827a27.jpg  
  inflating: craters/valid/images/mars_crater--91-_jpg.rf.9203caee622cf671580b91536e36e7e2.jpg  
  inflating: craters/valid/images/mars_crater--92-_jpg.rf.608e45488b76786c69755a901c1b73c9.jpg  
  inflating: craters/valid/images/mars_crater--95-_jpg.rf.671f7041e41a37f7faec12f3e9eb1d7d.jpg  
  inflating: craters/valid/images/mars_crater--98-_jpg.rf.441572398e83f5d7769a8e57248c9248.jpg  
  inflating: craters/valid/labels.cache  
  inflating: craters/valid/labels/014_png.rf.6b86c8afeb3ebca92872fd966d076adc.txt  
  inflating: craters/valid/labels/021_png.rf.575e0f1cb87a2cc439172de15816c2cc.txt  
  inflating: craters/valid/labels/023_png.rf.0a3106bdcc8e64bba283f961db77c9ec.txt  
  inflating: craters/valid/labels/024_png.rf.be24000681f4f356e2a027fb7ca0c552.txt  
  inflating: craters/valid/labels/mars_crater--1-_png.rf.f1b399f95708fd0ce520f23c9944ed44.txt  
  inflating: craters/valid/labels/mars_crater--104-_jpg.rf.2ff6036b976ac6bbba612dd48f144d4d.txt  
  inflating: craters/valid/labels/mars_crater--107-_jpg.rf.eb0f7061ed8c8af8be0e8af6b97226b0.txt  
  inflating: craters/valid/labels/mars_crater--115-_jpg.rf.8b1bf8c37395c894e88e543ccb4cc42f.txt  
  inflating: craters/valid/labels/mars_crater--13-_jpg.rf.f6fc01f728dfec8b32ad59d696a1a08d.txt  
  inflating: craters/valid/labels/mars_crater--2-_png.rf.08b565c861e9ac03e3cd1f9b0a6cddbe.txt  
  inflating: craters/valid/labels/mars_crater--23-_jpg.rf.ab2b0f47006c0c17260c312215dcfb88.txt  
  inflating: craters/valid/labels/mars_crater--28-_jpg.rf.8a4c9991d6739123bd0cbf018ea6f50d.txt  
  inflating: craters/valid/labels/mars_crater--29-_jpg.rf.719ff6d6c1aafd71147c173f7d224018.txt  
  inflating: craters/valid/labels/mars_crater--40-_jpg.rf.29e123c14a95b2e0fcdc93e9e8cff902.txt  
  inflating: craters/valid/labels/mars_crater--47-_jpg.rf.63eed086b1d39dc52405a398229dc586.txt  
  inflating: craters/valid/labels/mars_crater--63-_jpg.rf.ab0440022651f886c68744a55eb215d9.txt  
  inflating: craters/valid/labels/mars_crater--64-_jpg.rf.fd0838698f86dd546cdfcfea987b98b2.txt  
  inflating: craters/valid/labels/mars_crater--67-_jpg.rf.cf856f9fde7eb10f7f1524ebb0024502.txt  
  inflating: craters/valid/labels/mars_crater--72-_jpg.rf.4e01fbde7746b57082310e11b1ff03e2.txt  
  inflating: craters/valid/labels/mars_crater--73-_jpg.rf.91d7dc2cc9ae2d5dee41207d8992c3b3.txt  
  inflating: craters/valid/labels/mars_crater--79-_jpg.rf.984de20cb547cf4ee0324ebbf3fb7a88.txt  
  inflating: craters/valid/labels/mars_crater--89-_jpg.rf.a57ed45379b066a537e1203ac9827a27.txt  
  inflating: craters/valid/labels/mars_crater--91-_jpg.rf.9203caee622cf671580b91536e36e7e2.txt  
  inflating: craters/valid/labels/mars_crater--92-_jpg.rf.608e45488b76786c69755a901c1b73c9.txt  
  inflating: craters/valid/labels/mars_crater--95-_jpg.rf.671f7041e41a37f7faec12f3e9eb1d7d.txt  
  inflating: craters/valid/labels/mars_crater--98-_jpg.rf.441572398e83f5d7769a8e57248c9248.txt  

Una vez tenemos sus datos cargados, debemos instalar varios procesos y librerias. Ademas debemos pasar todos los datos proporcionados por Alberto a unas carpetas. El ultimo parrafo del siguiente codigo es a traves del cualguardo los datos en las carpetas nuevas, llamadas 'content/craters/valid/images', 'content/craters/train/images', content/craters/valid/labels' y content/craters/train/labels'.

In [2]:
!git clone https://github.com/pytorch/vision.git
!cd vision
!git checkout v0.8.2

!cp ./vision/references/detection/utils.py ./
!cp ./vision/references/detection/transforms.py ./
!cp ./vision/references/detection/coco_eval.py ./
!cp ./vision/references/detection/engine.py ./
!cp ./vision/references/detection/coco_utils.py ./

!pip install cython
# Install pycocotools, the version by default in Colab
!pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
!pip install -U albumentations
!pip install -U opencv-python

#Copy and unify the train and validation datasets into one folder for images and another for labels
!mkdir ./train
!cp -a /content/craters/train/images/. ./train/images/
!cp -a /content/craters/valid/images/. ./valid/images/
!cp -a /content/craters/train/labels/. ./train/labels/
!cp -a /content/craters/valid/labels/. ./valid/labels/
Cloning into 'vision'...
remote: Enumerating objects: 423858, done.
remote: Counting objects: 100% (4320/4320), done.
remote: Compressing objects: 100% (257/257), done.
remote: Total 423858 (delta 4080), reused 4279 (delta 4057), pack-reused 419538
Receiving objects: 100% (423858/423858), 838.25 MiB | 26.22 MiB/s, done.
Resolving deltas: 100% (393176/393176), done.
fatal: not a git repository (or any of the parent directories): .git
Requirement already satisfied: cython in /usr/local/lib/python3.10/dist-packages (3.0.5)
Collecting git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI
  Cloning https://github.com/cocodataset/cocoapi.git to /tmp/pip-req-build-y55__kdp
  Running command git clone --filter=blob:none --quiet https://github.com/cocodataset/cocoapi.git /tmp/pip-req-build-y55__kdp
  Resolved https://github.com/cocodataset/cocoapi.git to commit 8c9bcc3cf640524c4c20a9c40e89cb6a2f2fa0e9
  Preparing metadata (setup.py) ... done
Requirement already satisfied: setuptools>=18.0 in /usr/local/lib/python3.10/dist-packages (from pycocotools==2.0) (67.7.2)
Requirement already satisfied: cython>=0.27.3 in /usr/local/lib/python3.10/dist-packages (from pycocotools==2.0) (3.0.5)
Requirement already satisfied: matplotlib>=2.1.0 in /usr/local/lib/python3.10/dist-packages (from pycocotools==2.0) (3.7.1)
Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=2.1.0->pycocotools==2.0) (1.2.0)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=2.1.0->pycocotools==2.0) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=2.1.0->pycocotools==2.0) (4.44.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=2.1.0->pycocotools==2.0) (1.4.5)
Requirement already satisfied: numpy>=1.20 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=2.1.0->pycocotools==2.0) (1.23.5)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=2.1.0->pycocotools==2.0) (23.2)
Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=2.1.0->pycocotools==2.0) (9.4.0)
Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=2.1.0->pycocotools==2.0) (3.1.1)
Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=2.1.0->pycocotools==2.0) (2.8.2)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib>=2.1.0->pycocotools==2.0) (1.16.0)
Building wheels for collected packages: pycocotools
  Building wheel for pycocotools (setup.py) ... done
  Created wheel for pycocotools: filename=pycocotools-2.0-cp310-cp310-linux_x86_64.whl size=375457 sha256=bfb7d974f96e94e3511795e9d85953bd20e764b55b054cceb8495a1433c1e2ad
  Stored in directory: /tmp/pip-ephem-wheel-cache-omnkt8ra/wheels/39/61/b4/480fbddb4d3d6bc34083e7397bc6f5d1381f79acc68e9f3511
Successfully built pycocotools
Installing collected packages: pycocotools
  Attempting uninstall: pycocotools
    Found existing installation: pycocotools 2.0.7
    Uninstalling pycocotools-2.0.7:
      Successfully uninstalled pycocotools-2.0.7
Successfully installed pycocotools-2.0
Requirement already satisfied: albumentations in /usr/local/lib/python3.10/dist-packages (1.3.1)
Requirement already satisfied: numpy>=1.11.1 in /usr/local/lib/python3.10/dist-packages (from albumentations) (1.23.5)
Requirement already satisfied: scipy>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from albumentations) (1.11.3)
Requirement already satisfied: scikit-image>=0.16.1 in /usr/local/lib/python3.10/dist-packages (from albumentations) (0.19.3)
Requirement already satisfied: PyYAML in /usr/local/lib/python3.10/dist-packages (from albumentations) (6.0.1)
Requirement already satisfied: qudida>=0.0.4 in /usr/local/lib/python3.10/dist-packages (from albumentations) (0.0.4)
Requirement already satisfied: opencv-python-headless>=4.1.1 in /usr/local/lib/python3.10/dist-packages (from albumentations) (4.8.1.78)
Requirement already satisfied: scikit-learn>=0.19.1 in /usr/local/lib/python3.10/dist-packages (from qudida>=0.0.4->albumentations) (1.2.2)
Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from qudida>=0.0.4->albumentations) (4.5.0)
Requirement already satisfied: networkx>=2.2 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.16.1->albumentations) (3.2.1)
Requirement already satisfied: pillow!=7.1.0,!=7.1.1,!=8.3.0,>=6.1.0 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.16.1->albumentations) (9.4.0)
Requirement already satisfied: imageio>=2.4.1 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.16.1->albumentations) (2.31.6)
Requirement already satisfied: tifffile>=2019.7.26 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.16.1->albumentations) (2023.9.26)
Requirement already satisfied: PyWavelets>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.16.1->albumentations) (1.4.1)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.16.1->albumentations) (23.2)
Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.19.1->qudida>=0.0.4->albumentations) (1.3.2)
Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.19.1->qudida>=0.0.4->albumentations) (3.2.0)
Requirement already satisfied: opencv-python in /usr/local/lib/python3.10/dist-packages (4.8.0.76)
Collecting opencv-python
  Downloading opencv_python-4.8.1.78-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (61.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.7/61.7 MB 10.2 MB/s eta 0:00:00
Requirement already satisfied: numpy>=1.21.2 in /usr/local/lib/python3.10/dist-packages (from opencv-python) (1.23.5)
Installing collected packages: opencv-python
  Attempting uninstall: opencv-python
    Found existing installation: opencv-python 4.8.0.76
    Uninstalling opencv-python-4.8.0.76:
      Successfully uninstalled opencv-python-4.8.0.76
Successfully installed opencv-python-4.8.1.78
cp: cannot create directory './valid/images/': No such file or directory
cp: cannot create directory './valid/labels/': No such file or directory

Una vez hemos hecho todo anterior importamos las siguientes librerias necesarias:

In [3]:
import os
import numpy as np
import torch
import torchvision
from torchvision.models.detection.faster_rcnn import FastRCNNPredictor
from engine import train_one_epoch
import utils
import transforms as T
import albumentations as A
import cv2
import time
from albumentations.pytorch.transforms import ToTensorV2
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from  sklearn.model_selection import KFold
import random

Eliminamos la parte de evaluate, ya que no lo queremos usar en esta practica. Y en los siguientes códigos eliminamos todo lo relacionado con evaluate.

Part 2: Dataset class setup¶

In [4]:
class CraterDataset(object):
    def __init__(self, root, transforms):
        self.root = root
        self.transforms = transforms
        # load all image files, sorting them to
        # ensure that they are aligned
        self.imgs = list(sorted(os.listdir(os.path.join(self.root, "images"))))
        self.annots = list(sorted(os.listdir(os.path.join(self.root, "labels"))))
        self.classes = ['Background','Crater']

    # Converts boundry box formats, this version assumes single class only!
    def convert_box_cord(self,bboxs, format_from, format_to, img_shape):
        if format_from == 'normxywh':
            if format_to == 'xyminmax':
                xw = bboxs[:, (1, 3)] * img_shape[1]
                yh = bboxs[:, (2, 4)] * img_shape[0]
                xmin = xw[:, 0] - xw[:, 1] / 2
                xmax = xw[:, 0] + xw[:, 1] / 2
                ymin = yh[:, 0] - yh[:, 1] / 2
                ymax = yh[:, 0] + yh[:, 1] / 2
                coords_converted = np.column_stack((xmin, ymin, xmax, ymax))

        return coords_converted

    def __getitem__(self, idx):
        # load images and boxes
        img_path = os.path.join(self.root, "images", self.imgs[idx])
        annot_path = os.path.join(self.root, "labels", self.annots[idx])
        img = cv2.imread(img_path)
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB).astype(np.float32)
        img= img/255.0

        # retrieve bbox list and format to required type,
        # if annotation file is empty, fill dummy box with label 0
        if os.path.getsize(annot_path) != 0:
            bboxs = np.loadtxt(annot_path, ndmin=2)
            bboxs = self.convert_box_cord(bboxs, 'normxywh', 'xyminmax', img.shape)
            num_objs = len(bboxs)
            bboxs = torch.as_tensor(bboxs, dtype=torch.float32)
            # there is only one class
            labels = torch.ones((num_objs,), dtype=torch.int64)
            # suppose all instances are not crowd
            iscrowd = torch.zeros((num_objs,), dtype=torch.int64)
        else:
            bboxs = torch.as_tensor([[0, 0, 640, 640]], dtype=torch.float32)
            labels = torch.zeros((1,), dtype=torch.int64)
            iscrowd = torch.zeros((1,), dtype=torch.int64)

        area = (bboxs[:, 3] - bboxs[:, 1]) * (bboxs[:, 2] - bboxs[:, 0])
        image_id = torch.tensor([idx])

        target = {}
        target["boxes"] = bboxs
        target["labels"] = labels
        target["image_id"] = image_id
        target["area"] = area
        target["iscrowd"] = iscrowd

        if self.transforms is not None:
            sample = self.transforms(image=img,
                                     bboxes=target['boxes'],
                                     labels=labels)
        img = sample['image']
        target['boxes'] = torch.tensor(sample['bboxes'])
        target['labels'] = torch.tensor(sample['labels'])
        if target['boxes'].ndim == 1:
            target['boxes'] = torch.as_tensor([[0, 0, 640, 640]], dtype=torch.float32)
            target['labels'] = torch.zeros((1,), dtype=torch.int64)
        return img, target

    def __len__(self):
        return len(self.imgs)

Dentro de este codigo podemos encontrar diversas funciones:

Inicializacion: init --> empieza la inicializacion de los objetos que van a ser procesados. Root --> hace referencia al directorio en el que se encuentran las etiquetas e imagenes. Transforms --> transforma una cadena de datos.

Conversión de Cuadros Delimitadores: El método convert_box_cord lo utilizamos para convertir las coordenadas de los cuadros delimitadores de un formato ('normxywh') a otro formato ('xyminmax'). Esta función convierte los cuadros delimitadores de coordenadas normalizadas (coordenadas del centro y ancho/alto) al formato con (x_min, y_min, x_max, y_max).

El metodo getitem arga una imagen y los cuadros dleimitadores. Además calcula el área de los cuadros delimitadores y construye un diccionario (target) que contiene la información de la imagen y las anotaciones.

Método len:longitud del conjunto de datos, que es el número de imágenes en el conjunto de datos.

Part 3: Model Configuration¶

In [5]:
def get_model_bbox(num_classes):
    # load an instance segmentation model pre-trained on COCO
    model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)

    # get number of input features for the classifier
    in_features = model.roi_heads.box_predictor.cls_score.in_features
    # replace the pre-trained head with a new one
    model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)

    return model

model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True): Este fragmento de código carga un modelo preentrenado de detección de objetos Faster R-CNN. El parámetro pretrained=True significa que se utilizarán los pesos preentrenados.

in_features = model.roi_heads.box_predictor.cls_score.in_features: Aquí, se obtiene el número de características de entrada para el clasificador en la cabeza del modelo.

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes) --> implementación personalizada que toma el número de características de entrada (in_features) y el número de clases (num_classes) como argumentos.

Al final, la función devuelve el modelo modificado con el nuevo clasificador personalizado.

In [6]:
def get_transform(train):
    if train:
        return A.Compose([
            # A.Flip(p=0.5),
            # A.RandomResizedCrop(height=640,width=640,p=0.4),
            # # A.Perspective(p=0.4),
            # A.Rotate(p=0.5),
            # # A.Transpose(p=0.3),
            ToTensorV2(p=1.0)],
            bbox_params=A.BboxParams(format='pascal_voc',min_visibility=0.4, label_fields=['labels']))
    else:
        return A.Compose([ToTensorV2(p=1.0)],
                         bbox_params=A.BboxParams(format='pascal_voc', min_visibility=0.5, label_fields=['labels']))

La función get_transform se utiliza para definir las transformaciones de datos que se aplicarán a las imágenes y las anotaciones de cuadros delimitadores.

Si train es True, se devuelve una lista de transformaciones de datos específicas para el entrenamiento, pero si train es False, se devuelve una lista de transformaciones de datos para la evaluación

En el codigo se aplica la transformacion ToTensorV2, que convierte la imagen y las anotaciones en tensores.

El 0,4 y el 0,5 hace referencia al tamo de los cuadros delimitadores

In [7]:
def reset_weights(m):
  '''
    Try resetting model weights to avoid
    weight leakage.
  '''
  for layer in m.children():
    if hasattr(layer, 'reset_parameters'):
        print(f'Reset trainable parameters of layer = {layer}')
        layer.reset_parameters()

La función reset_weights se utiliza para restablecer los pesos del modelo PyTorch.

Part 4: Image visualization¶

In [8]:
# Function to visualize bounding boxes in the image
def plot_img_bbox(img, target):
    # plot the image and bboxes
    # Bounding boxes are defined as follows: x-min y-min width height
    fig, a = plt.subplots(1, 1)
    fig.set_size_inches(5, 5)
    a.imshow(img.permute((1,2,0)))
    for box in (target['boxes']):
        x, y, width, height = box[0], box[1], box[2] - box[0], box[3] - box[1]
        rect = patches.Rectangle((x, y),
                                 width, height,
                                 edgecolor='b',
                                 facecolor='none',
                                 clip_on=False)
        a.annotate('Crater', (x,y-20), color='blue', weight='bold',
                   fontsize=10, ha='left', va='top')

        # Draw the bounding box on top of the image
        a.add_patch(rect)
    plt.show()

La función plot_img_bbox se utiliza para visualizar imágenes junto con los cuadros delimitadores (bounding boxes) en la imagen.

La función toma dos argumentos: img, que representa la imagen en forma de tensor, y target, que es un diccionario que contiene información sobre las bounding boxes en la imagen. La figura tiene un tamaño de 5x5 pulgadas.

Se crea un rectángulo (rect) con los valores calculados y se le asigna un color de borde 'blue' y un relleno sin color ('none').

Se agrega un texto "Crater" cerca de la bounding box y se agrega el rectángulo al eje y se muestra la figura con la imagen y los cuadros delimitadores.

In [9]:
dataset = CraterDataset('/content/craters/train', get_transform(train=True))
# Prints an example of image with annotations
for i in random.sample(range(1, 100), 3):
    img, target = dataset[i]
    plot_img_bbox(img, target)

Hemos cambiado la ruta de acceso previa de kaggle por la nuestra denominada: /content/craters/train --> aqui es donde se encuentran los datos de entrenamiento.

Se crea una instancia del conjunto de datos CraterDataset. se utiliza la función get_transform(train=True) para aplicar transformaciones específicas para el entrenamiento.

Part 5: K-fold cross validation¶

In [10]:
# train on the GPU or on the CPU, if a GPU is not available
device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
k_folds = 4
num_epochs = 20


# our dataset has two classes only - background and crater
num_classes = 2
# use our dataset and defined transformations
dataset = CraterDataset('/content/craters/train', get_transform(train=True))
dataset_val = CraterDataset('/content/craters/test', get_transform(train=False))

# Define the K-fold Cross Validator
kfold = KFold(n_splits=k_folds, shuffle=True)

# Start print
print('--------------------------------')

# K-fold Cross Validation model evaluation
for fold, (train_ids, val_ids) in enumerate(kfold.split(dataset)):
    print(f'FOLD {fold}')
    print('--------------------------------')

    dataset_subset = torch.utils.data.Subset(dataset, list(train_ids))
    dataset_val_subset = torch.utils.data.Subset(dataset_val, list(val_ids))

    # define training and validation data loaders
    data_loader = torch.utils.data.DataLoader(
            dataset_subset, batch_size=8, shuffle=True, num_workers=2,
        collate_fn=utils.collate_fn)

    data_loader_val = torch.utils.data.DataLoader(
        dataset_val_subset, batch_size=1, shuffle=False, num_workers=2,
        collate_fn=utils.collate_fn)

    # get the model using our helper function
    model = get_model_bbox(num_classes)

    #model.apply(reset_weights) # Check if beneficial

    # move model to the right device
    model.to(device)

    # construct an optimizer
    params = [p for p in model.parameters() if p.requires_grad]
    optimizer = torch.optim.SGD(params, lr=0.005,  # Check if beneficial
                                momentum=0.9, weight_decay=0)

    # and a learning rate scheduler
    lr_scheduler = torch.optim.lr_scheduler.StepLR(optimizer,
                                                    step_size=10,
                                                    gamma=0.1)

    # let's train!
    for epoch in range(num_epochs):


        # train for one epoch, printing every 50 iterations
        train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=50)
        # update the learning rate
        lr_scheduler.step()
--------------------------------
FOLD 0
--------------------------------
/usr/local/lib/python3.10/dist-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.
  warnings.warn(
/usr/local/lib/python3.10/dist-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=FasterRCNN_ResNet50_FPN_Weights.COCO_V1`. You can also use `weights=FasterRCNN_ResNet50_FPN_Weights.DEFAULT` to get the most up-to-date weights.
  warnings.warn(msg)
Downloading: "https://download.pytorch.org/models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth" to /root/.cache/torch/hub/checkpoints/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth
100%|██████████| 160M/160M [00:02<00:00, 81.8MB/s]
Epoch: [0]  [ 0/10]  eta: 0:01:35  lr: 0.000560  loss: 2.1633 (2.1633)  loss_classifier: 0.6996 (0.6996)  loss_box_reg: 0.2703 (0.2703)  loss_objectness: 1.1158 (1.1158)  loss_rpn_box_reg: 0.0775 (0.0775)  time: 9.5091  data: 0.3423  max mem: 7206
Epoch: [0]  [ 9/10]  eta: 0:00:02  lr: 0.005000  loss: 0.9463 (1.3159)  loss_classifier: 0.3389 (0.4858)  loss_box_reg: 0.3303 (0.3677)  loss_objectness: 0.2472 (0.4091)  loss_rpn_box_reg: 0.0539 (0.0532)  time: 2.1100  data: 0.0625  max mem: 7365
Epoch: [0] Total time: 0:00:21 (2.1150 s / it)
Epoch: [1]  [ 0/10]  eta: 0:00:17  lr: 0.005000  loss: 0.7051 (0.7051)  loss_classifier: 0.2609 (0.2609)  loss_box_reg: 0.2964 (0.2964)  loss_objectness: 0.0842 (0.0842)  loss_rpn_box_reg: 0.0636 (0.0636)  time: 1.7999  data: 0.3730  max mem: 7366
Epoch: [1]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.7051 (0.7190)  loss_classifier: 0.2441 (0.2310)  loss_box_reg: 0.3450 (0.3324)  loss_objectness: 0.0790 (0.1008)  loss_rpn_box_reg: 0.0469 (0.0548)  time: 1.3927  data: 0.0722  max mem: 7366
Epoch: [1] Total time: 0:00:13 (1.3991 s / it)
Epoch: [2]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.7969 (0.7969)  loss_classifier: 0.2527 (0.2527)  loss_box_reg: 0.4441 (0.4441)  loss_objectness: 0.0574 (0.0574)  loss_rpn_box_reg: 0.0427 (0.0427)  time: 1.9029  data: 0.4460  max mem: 7366
Epoch: [2]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.5569 (0.5792)  loss_classifier: 0.1671 (0.1779)  loss_box_reg: 0.2646 (0.2945)  loss_objectness: 0.0574 (0.0658)  loss_rpn_box_reg: 0.0367 (0.0409)  time: 1.3747  data: 0.0696  max mem: 7368
Epoch: [2] Total time: 0:00:13 (1.3810 s / it)
Epoch: [3]  [ 0/10]  eta: 0:00:18  lr: 0.005000  loss: 0.2686 (0.2686)  loss_classifier: 0.0906 (0.0906)  loss_box_reg: 0.1299 (0.1299)  loss_objectness: 0.0399 (0.0399)  loss_rpn_box_reg: 0.0082 (0.0082)  time: 1.8369  data: 0.3775  max mem: 7368
Epoch: [3]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.4197 (0.4516)  loss_classifier: 0.1443 (0.1468)  loss_box_reg: 0.2137 (0.2281)  loss_objectness: 0.0435 (0.0466)  loss_rpn_box_reg: 0.0235 (0.0302)  time: 1.3851  data: 0.0668  max mem: 7368
Epoch: [3] Total time: 0:00:13 (1.3923 s / it)
Epoch: [4]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.6535 (0.6535)  loss_classifier: 0.1986 (0.1986)  loss_box_reg: 0.3362 (0.3362)  loss_objectness: 0.0623 (0.0623)  loss_rpn_box_reg: 0.0564 (0.0564)  time: 1.9005  data: 0.4175  max mem: 7368
Epoch: [4]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3968 (0.4416)  loss_classifier: 0.1286 (0.1419)  loss_box_reg: 0.2003 (0.2354)  loss_objectness: 0.0296 (0.0366)  loss_rpn_box_reg: 0.0188 (0.0277)  time: 1.3927  data: 0.0666  max mem: 7368
Epoch: [4] Total time: 0:00:13 (1.3991 s / it)
Epoch: [5]  [ 0/10]  eta: 0:00:18  lr: 0.005000  loss: 0.3337 (0.3337)  loss_classifier: 0.1105 (0.1105)  loss_box_reg: 0.1876 (0.1876)  loss_objectness: 0.0159 (0.0159)  loss_rpn_box_reg: 0.0197 (0.0197)  time: 1.8582  data: 0.3788  max mem: 7368
Epoch: [5]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3635 (0.3582)  loss_classifier: 0.1209 (0.1195)  loss_box_reg: 0.1876 (0.1882)  loss_objectness: 0.0229 (0.0274)  loss_rpn_box_reg: 0.0197 (0.0231)  time: 1.4140  data: 0.0666  max mem: 7368
Epoch: [5] Total time: 0:00:14 (1.4204 s / it)
Epoch: [6]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.3542 (0.3542)  loss_classifier: 0.1085 (0.1085)  loss_box_reg: 0.2032 (0.2032)  loss_objectness: 0.0189 (0.0189)  loss_rpn_box_reg: 0.0236 (0.0236)  time: 1.9235  data: 0.4034  max mem: 7368
Epoch: [6]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3572 (0.3743)  loss_classifier: 0.1130 (0.1212)  loss_box_reg: 0.2032 (0.2001)  loss_objectness: 0.0222 (0.0263)  loss_rpn_box_reg: 0.0222 (0.0267)  time: 1.4322  data: 0.0661  max mem: 7368
Epoch: [6] Total time: 0:00:14 (1.4386 s / it)
Epoch: [7]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.4343 (0.4343)  loss_classifier: 0.1264 (0.1264)  loss_box_reg: 0.2740 (0.2740)  loss_objectness: 0.0177 (0.0177)  loss_rpn_box_reg: 0.0162 (0.0162)  time: 1.9248  data: 0.3894  max mem: 7368
Epoch: [7]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3115 (0.3373)  loss_classifier: 0.0960 (0.1051)  loss_box_reg: 0.1714 (0.1853)  loss_objectness: 0.0182 (0.0221)  loss_rpn_box_reg: 0.0152 (0.0248)  time: 1.4551  data: 0.0677  max mem: 7368
Epoch: [7] Total time: 0:00:14 (1.4635 s / it)
Epoch: [8]  [ 0/10]  eta: 0:00:23  lr: 0.005000  loss: 0.2150 (0.2150)  loss_classifier: 0.0760 (0.0760)  loss_box_reg: 0.1117 (0.1117)  loss_objectness: 0.0130 (0.0130)  loss_rpn_box_reg: 0.0143 (0.0143)  time: 2.3488  data: 0.7821  max mem: 7368
Epoch: [8]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.2913 (0.3115)  loss_classifier: 0.0845 (0.0983)  loss_box_reg: 0.1557 (0.1719)  loss_objectness: 0.0167 (0.0183)  loss_rpn_box_reg: 0.0190 (0.0230)  time: 1.4862  data: 0.1045  max mem: 7368
Epoch: [8] Total time: 0:00:14 (1.4981 s / it)
Epoch: [9]  [ 0/10]  eta: 0:00:20  lr: 0.005000  loss: 0.2247 (0.2247)  loss_classifier: 0.0835 (0.0835)  loss_box_reg: 0.1145 (0.1145)  loss_objectness: 0.0137 (0.0137)  loss_rpn_box_reg: 0.0129 (0.0129)  time: 2.0950  data: 0.5438  max mem: 7368
Epoch: [9]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3267 (0.2954)  loss_classifier: 0.0938 (0.0957)  loss_box_reg: 0.1765 (0.1680)  loss_objectness: 0.0102 (0.0143)  loss_rpn_box_reg: 0.0129 (0.0175)  time: 1.4422  data: 0.0819  max mem: 7368
Epoch: [9] Total time: 0:00:14 (1.4492 s / it)
Epoch: [10]  [ 0/10]  eta: 0:00:18  lr: 0.000500  loss: 0.2231 (0.2231)  loss_classifier: 0.0717 (0.0717)  loss_box_reg: 0.1318 (0.1318)  loss_objectness: 0.0072 (0.0072)  loss_rpn_box_reg: 0.0123 (0.0123)  time: 1.8416  data: 0.3458  max mem: 7368
Epoch: [10]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2231 (0.2712)  loss_classifier: 0.0759 (0.0840)  loss_box_reg: 0.1318 (0.1565)  loss_objectness: 0.0117 (0.0146)  loss_rpn_box_reg: 0.0123 (0.0161)  time: 1.4180  data: 0.0630  max mem: 7368
Epoch: [10] Total time: 0:00:14 (1.4248 s / it)
Epoch: [11]  [ 0/10]  eta: 0:00:18  lr: 0.000500  loss: 0.3061 (0.3061)  loss_classifier: 0.0887 (0.0887)  loss_box_reg: 0.1851 (0.1851)  loss_objectness: 0.0143 (0.0143)  loss_rpn_box_reg: 0.0179 (0.0179)  time: 1.8543  data: 0.3619  max mem: 7368
Epoch: [11]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2460 (0.2648)  loss_classifier: 0.0741 (0.0830)  loss_box_reg: 0.1425 (0.1521)  loss_objectness: 0.0111 (0.0133)  loss_rpn_box_reg: 0.0116 (0.0164)  time: 1.4172  data: 0.0651  max mem: 7368
Epoch: [11] Total time: 0:00:14 (1.4241 s / it)
Epoch: [12]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2135 (0.2135)  loss_classifier: 0.0775 (0.0775)  loss_box_reg: 0.1223 (0.1223)  loss_objectness: 0.0082 (0.0082)  loss_rpn_box_reg: 0.0055 (0.0055)  time: 1.9077  data: 0.3810  max mem: 7368
Epoch: [12]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2460 (0.2891)  loss_classifier: 0.0775 (0.0899)  loss_box_reg: 0.1446 (0.1676)  loss_objectness: 0.0121 (0.0146)  loss_rpn_box_reg: 0.0118 (0.0170)  time: 1.4305  data: 0.0669  max mem: 7368
Epoch: [12] Total time: 0:00:14 (1.4372 s / it)
Epoch: [13]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.1876 (0.1876)  loss_classifier: 0.0675 (0.0675)  loss_box_reg: 0.1059 (0.1059)  loss_objectness: 0.0064 (0.0064)  loss_rpn_box_reg: 0.0077 (0.0077)  time: 1.9390  data: 0.4246  max mem: 7368
Epoch: [13]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2026 (0.2522)  loss_classifier: 0.0675 (0.0793)  loss_box_reg: 0.1296 (0.1452)  loss_objectness: 0.0095 (0.0118)  loss_rpn_box_reg: 0.0125 (0.0160)  time: 1.4392  data: 0.0687  max mem: 7368
Epoch: [13] Total time: 0:00:14 (1.4459 s / it)
Epoch: [14]  [ 0/10]  eta: 0:00:18  lr: 0.000500  loss: 0.2396 (0.2396)  loss_classifier: 0.0830 (0.0830)  loss_box_reg: 0.1219 (0.1219)  loss_objectness: 0.0176 (0.0176)  loss_rpn_box_reg: 0.0172 (0.0172)  time: 1.8803  data: 0.3688  max mem: 7368
Epoch: [14]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2482 (0.2748)  loss_classifier: 0.0830 (0.0839)  loss_box_reg: 0.1490 (0.1586)  loss_objectness: 0.0136 (0.0149)  loss_rpn_box_reg: 0.0121 (0.0175)  time: 1.4323  data: 0.0670  max mem: 7368
Epoch: [14] Total time: 0:00:14 (1.4392 s / it)
Epoch: [15]  [ 0/10]  eta: 0:00:18  lr: 0.000500  loss: 0.3369 (0.3369)  loss_classifier: 0.1009 (0.1009)  loss_box_reg: 0.2007 (0.2007)  loss_objectness: 0.0187 (0.0187)  loss_rpn_box_reg: 0.0165 (0.0165)  time: 1.8934  data: 0.3813  max mem: 7368
Epoch: [15]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2401 (0.2613)  loss_classifier: 0.0753 (0.0836)  loss_box_reg: 0.1403 (0.1483)  loss_objectness: 0.0115 (0.0139)  loss_rpn_box_reg: 0.0103 (0.0155)  time: 1.4289  data: 0.0666  max mem: 7368
Epoch: [15] Total time: 0:00:14 (1.4358 s / it)
Epoch: [16]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.1549 (0.1549)  loss_classifier: 0.0483 (0.0483)  loss_box_reg: 0.0792 (0.0792)  loss_objectness: 0.0132 (0.0132)  loss_rpn_box_reg: 0.0142 (0.0142)  time: 1.9065  data: 0.3851  max mem: 7368
Epoch: [16]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2408 (0.2520)  loss_classifier: 0.0660 (0.0780)  loss_box_reg: 0.1433 (0.1450)  loss_objectness: 0.0107 (0.0134)  loss_rpn_box_reg: 0.0148 (0.0157)  time: 1.4357  data: 0.0675  max mem: 7368
Epoch: [16] Total time: 0:00:14 (1.4463 s / it)
Epoch: [17]  [ 0/10]  eta: 0:00:21  lr: 0.000500  loss: 0.1922 (0.1922)  loss_classifier: 0.0691 (0.0691)  loss_box_reg: 0.1052 (0.1052)  loss_objectness: 0.0127 (0.0127)  loss_rpn_box_reg: 0.0052 (0.0052)  time: 2.1587  data: 0.5489  max mem: 7368
Epoch: [17]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2337 (0.2398)  loss_classifier: 0.0695 (0.0767)  loss_box_reg: 0.1359 (0.1353)  loss_objectness: 0.0144 (0.0131)  loss_rpn_box_reg: 0.0120 (0.0147)  time: 1.4502  data: 0.0842  max mem: 7368
Epoch: [17] Total time: 0:00:14 (1.4627 s / it)
Epoch: [18]  [ 0/10]  eta: 0:00:20  lr: 0.000500  loss: 0.3238 (0.3238)  loss_classifier: 0.0935 (0.0935)  loss_box_reg: 0.1842 (0.1842)  loss_objectness: 0.0203 (0.0203)  loss_rpn_box_reg: 0.0258 (0.0258)  time: 2.0473  data: 0.5312  max mem: 7368
Epoch: [18]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2476 (0.2460)  loss_classifier: 0.0769 (0.0763)  loss_box_reg: 0.1415 (0.1409)  loss_objectness: 0.0106 (0.0139)  loss_rpn_box_reg: 0.0100 (0.0149)  time: 1.4388  data: 0.0808  max mem: 7369
Epoch: [18] Total time: 0:00:14 (1.4459 s / it)
Epoch: [19]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2746 (0.2746)  loss_classifier: 0.0950 (0.0950)  loss_box_reg: 0.1521 (0.1521)  loss_objectness: 0.0123 (0.0123)  loss_rpn_box_reg: 0.0153 (0.0153)  time: 1.9202  data: 0.4058  max mem: 7369
Epoch: [19]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2305 (0.2429)  loss_classifier: 0.0744 (0.0785)  loss_box_reg: 0.1309 (0.1372)  loss_objectness: 0.0109 (0.0122)  loss_rpn_box_reg: 0.0121 (0.0152)  time: 1.4305  data: 0.0692  max mem: 7369
Epoch: [19] Total time: 0:00:14 (1.4381 s / it)
FOLD 1
--------------------------------
Epoch: [0]  [ 0/10]  eta: 0:00:19  lr: 0.000560  loss: 1.9283 (1.9283)  loss_classifier: 0.8330 (0.8330)  loss_box_reg: 0.2836 (0.2836)  loss_objectness: 0.7655 (0.7655)  loss_rpn_box_reg: 0.0462 (0.0462)  time: 1.9325  data: 0.4038  max mem: 7369
Epoch: [0]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.9705 (1.1390)  loss_classifier: 0.3511 (0.4792)  loss_box_reg: 0.2836 (0.3132)  loss_objectness: 0.1757 (0.3052)  loss_rpn_box_reg: 0.0462 (0.0415)  time: 1.4367  data: 0.0680  max mem: 7369
Epoch: [0] Total time: 0:00:14 (1.4437 s / it)
Epoch: [1]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 1.1435 (1.1435)  loss_classifier: 0.4801 (0.4801)  loss_box_reg: 0.5221 (0.5221)  loss_objectness: 0.0966 (0.0966)  loss_rpn_box_reg: 0.0447 (0.0447)  time: 1.9740  data: 0.4459  max mem: 7369
Epoch: [1]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.6563 (0.7164)  loss_classifier: 0.2193 (0.2454)  loss_box_reg: 0.3252 (0.3277)  loss_objectness: 0.0611 (0.0931)  loss_rpn_box_reg: 0.0383 (0.0502)  time: 1.4524  data: 0.0733  max mem: 7369
Epoch: [1] Total time: 0:00:14 (1.4597 s / it)
Epoch: [2]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.5127 (0.5127)  loss_classifier: 0.1644 (0.1644)  loss_box_reg: 0.2620 (0.2620)  loss_objectness: 0.0634 (0.0634)  loss_rpn_box_reg: 0.0229 (0.0229)  time: 1.9227  data: 0.4101  max mem: 7369
Epoch: [2]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.5127 (0.5133)  loss_classifier: 0.1644 (0.1628)  loss_box_reg: 0.2620 (0.2673)  loss_objectness: 0.0501 (0.0521)  loss_rpn_box_reg: 0.0285 (0.0311)  time: 1.4370  data: 0.0683  max mem: 7369
Epoch: [2] Total time: 0:00:14 (1.4450 s / it)
Epoch: [3]  [ 0/10]  eta: 0:00:18  lr: 0.005000  loss: 0.4061 (0.4061)  loss_classifier: 0.1229 (0.1229)  loss_box_reg: 0.2321 (0.2321)  loss_objectness: 0.0375 (0.0375)  loss_rpn_box_reg: 0.0136 (0.0136)  time: 1.8805  data: 0.3734  max mem: 7369
Epoch: [3]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.4741 (0.5146)  loss_classifier: 0.1548 (0.1670)  loss_box_reg: 0.2371 (0.2720)  loss_objectness: 0.0361 (0.0394)  loss_rpn_box_reg: 0.0219 (0.0361)  time: 1.4314  data: 0.0657  max mem: 7369
Epoch: [3] Total time: 0:00:14 (1.4401 s / it)
Epoch: [4]  [ 0/10]  eta: 0:00:21  lr: 0.005000  loss: 0.5659 (0.5659)  loss_classifier: 0.1931 (0.1931)  loss_box_reg: 0.3121 (0.3121)  loss_objectness: 0.0384 (0.0384)  loss_rpn_box_reg: 0.0222 (0.0222)  time: 2.1337  data: 0.5672  max mem: 7369
Epoch: [4]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3988 (0.4149)  loss_classifier: 0.1359 (0.1370)  loss_box_reg: 0.2058 (0.2230)  loss_objectness: 0.0320 (0.0308)  loss_rpn_box_reg: 0.0221 (0.0241)  time: 1.4560  data: 0.0834  max mem: 7369
Epoch: [4] Total time: 0:00:14 (1.4709 s / it)
Epoch: [5]  [ 0/10]  eta: 0:00:22  lr: 0.005000  loss: 0.4179 (0.4179)  loss_classifier: 0.1255 (0.1255)  loss_box_reg: 0.2431 (0.2431)  loss_objectness: 0.0171 (0.0171)  loss_rpn_box_reg: 0.0322 (0.0322)  time: 2.2487  data: 0.6627  max mem: 7369
Epoch: [5]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.4039 (0.4198)  loss_classifier: 0.1331 (0.1479)  loss_box_reg: 0.2070 (0.2162)  loss_objectness: 0.0281 (0.0305)  loss_rpn_box_reg: 0.0218 (0.0253)  time: 1.4656  data: 0.0957  max mem: 7369
Epoch: [5] Total time: 0:00:14 (1.4726 s / it)
Epoch: [6]  [ 0/10]  eta: 0:00:18  lr: 0.005000  loss: 0.2496 (0.2496)  loss_classifier: 0.0838 (0.0838)  loss_box_reg: 0.1292 (0.1292)  loss_objectness: 0.0182 (0.0182)  loss_rpn_box_reg: 0.0184 (0.0184)  time: 1.8892  data: 0.3930  max mem: 7369
Epoch: [6]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3488 (0.4089)  loss_classifier: 0.1275 (0.1354)  loss_box_reg: 0.1752 (0.2237)  loss_objectness: 0.0201 (0.0244)  loss_rpn_box_reg: 0.0184 (0.0253)  time: 1.4340  data: 0.0680  max mem: 7369
Epoch: [6] Total time: 0:00:14 (1.4418 s / it)
Epoch: [7]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.3759 (0.3759)  loss_classifier: 0.1357 (0.1357)  loss_box_reg: 0.2029 (0.2029)  loss_objectness: 0.0183 (0.0183)  loss_rpn_box_reg: 0.0191 (0.0191)  time: 1.9736  data: 0.4459  max mem: 7369
Epoch: [7]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3003 (0.3587)  loss_classifier: 0.0950 (0.1124)  loss_box_reg: 0.1808 (0.2038)  loss_objectness: 0.0154 (0.0183)  loss_rpn_box_reg: 0.0208 (0.0242)  time: 1.4407  data: 0.0734  max mem: 7369
Epoch: [7] Total time: 0:00:14 (1.4483 s / it)
Epoch: [8]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.2545 (0.2545)  loss_classifier: 0.0811 (0.0811)  loss_box_reg: 0.1363 (0.1363)  loss_objectness: 0.0161 (0.0161)  loss_rpn_box_reg: 0.0209 (0.0209)  time: 1.9026  data: 0.4101  max mem: 7369
Epoch: [8]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.2931 (0.3084)  loss_classifier: 0.0939 (0.0991)  loss_box_reg: 0.1707 (0.1775)  loss_objectness: 0.0154 (0.0147)  loss_rpn_box_reg: 0.0155 (0.0172)  time: 1.4348  data: 0.0680  max mem: 7369
Epoch: [8] Total time: 0:00:14 (1.4428 s / it)
Epoch: [9]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.1466 (0.1466)  loss_classifier: 0.0478 (0.0478)  loss_box_reg: 0.0778 (0.0778)  loss_objectness: 0.0150 (0.0150)  loss_rpn_box_reg: 0.0060 (0.0060)  time: 1.9029  data: 0.4035  max mem: 7369
Epoch: [9]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.2940 (0.2840)  loss_classifier: 0.0962 (0.0956)  loss_box_reg: 0.1490 (0.1589)  loss_objectness: 0.0138 (0.0133)  loss_rpn_box_reg: 0.0142 (0.0162)  time: 1.4391  data: 0.0695  max mem: 7369
Epoch: [9] Total time: 0:00:14 (1.4467 s / it)
Epoch: [10]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2010 (0.2010)  loss_classifier: 0.0559 (0.0559)  loss_box_reg: 0.1327 (0.1327)  loss_objectness: 0.0079 (0.0079)  loss_rpn_box_reg: 0.0045 (0.0045)  time: 1.9192  data: 0.4061  max mem: 7369
Epoch: [10]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2894 (0.2826)  loss_classifier: 0.0896 (0.0980)  loss_box_reg: 0.1583 (0.1599)  loss_objectness: 0.0103 (0.0106)  loss_rpn_box_reg: 0.0158 (0.0142)  time: 1.4314  data: 0.0674  max mem: 7369
Epoch: [10] Total time: 0:00:14 (1.4394 s / it)
Epoch: [11]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2435 (0.2435)  loss_classifier: 0.0964 (0.0964)  loss_box_reg: 0.1279 (0.1279)  loss_objectness: 0.0099 (0.0099)  loss_rpn_box_reg: 0.0094 (0.0094)  time: 1.9712  data: 0.4520  max mem: 7369
Epoch: [11]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2424 (0.2810)  loss_classifier: 0.0847 (0.0962)  loss_box_reg: 0.1280 (0.1579)  loss_objectness: 0.0120 (0.0119)  loss_rpn_box_reg: 0.0130 (0.0150)  time: 1.4469  data: 0.0751  max mem: 7369
Epoch: [11] Total time: 0:00:14 (1.4557 s / it)
Epoch: [12]  [ 0/10]  eta: 0:00:20  lr: 0.000500  loss: 0.1982 (0.1982)  loss_classifier: 0.0753 (0.0753)  loss_box_reg: 0.1065 (0.1065)  loss_objectness: 0.0059 (0.0059)  loss_rpn_box_reg: 0.0105 (0.0105)  time: 2.0766  data: 0.5241  max mem: 7369
Epoch: [12]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2863 (0.2870)  loss_classifier: 0.0864 (0.0912)  loss_box_reg: 0.1732 (0.1651)  loss_objectness: 0.0113 (0.0112)  loss_rpn_box_reg: 0.0132 (0.0195)  time: 1.4499  data: 0.0811  max mem: 7369
Epoch: [12] Total time: 0:00:14 (1.4636 s / it)
Epoch: [13]  [ 0/10]  eta: 0:00:21  lr: 0.000500  loss: 0.4031 (0.4031)  loss_classifier: 0.1235 (0.1235)  loss_box_reg: 0.2434 (0.2434)  loss_objectness: 0.0123 (0.0123)  loss_rpn_box_reg: 0.0238 (0.0238)  time: 2.1848  data: 0.6263  max mem: 7369
Epoch: [13]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2348 (0.2419)  loss_classifier: 0.0859 (0.0778)  loss_box_reg: 0.1273 (0.1383)  loss_objectness: 0.0109 (0.0119)  loss_rpn_box_reg: 0.0104 (0.0140)  time: 1.4603  data: 0.0897  max mem: 7369
Epoch: [13] Total time: 0:00:14 (1.4679 s / it)
Epoch: [14]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2135 (0.2135)  loss_classifier: 0.0619 (0.0619)  loss_box_reg: 0.1322 (0.1322)  loss_objectness: 0.0089 (0.0089)  loss_rpn_box_reg: 0.0105 (0.0105)  time: 1.9201  data: 0.4136  max mem: 7369
Epoch: [14]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2660 (0.2811)  loss_classifier: 0.0889 (0.0891)  loss_box_reg: 0.1442 (0.1629)  loss_objectness: 0.0128 (0.0135)  loss_rpn_box_reg: 0.0123 (0.0156)  time: 1.4384  data: 0.0690  max mem: 7369
Epoch: [14] Total time: 0:00:14 (1.4462 s / it)
Epoch: [15]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2401 (0.2401)  loss_classifier: 0.0659 (0.0659)  loss_box_reg: 0.1468 (0.1468)  loss_objectness: 0.0108 (0.0108)  loss_rpn_box_reg: 0.0166 (0.0166)  time: 1.9557  data: 0.4197  max mem: 7369
Epoch: [15]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2557 (0.2931)  loss_classifier: 0.0913 (0.0905)  loss_box_reg: 0.1468 (0.1696)  loss_objectness: 0.0108 (0.0143)  loss_rpn_box_reg: 0.0140 (0.0187)  time: 1.4407  data: 0.0711  max mem: 7369
Epoch: [15] Total time: 0:00:14 (1.4484 s / it)
Epoch: [16]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2188 (0.2188)  loss_classifier: 0.0901 (0.0901)  loss_box_reg: 0.1090 (0.1090)  loss_objectness: 0.0115 (0.0115)  loss_rpn_box_reg: 0.0083 (0.0083)  time: 1.9820  data: 0.4422  max mem: 7369
Epoch: [16]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2318 (0.2371)  loss_classifier: 0.0765 (0.0759)  loss_box_reg: 0.1390 (0.1375)  loss_objectness: 0.0100 (0.0111)  loss_rpn_box_reg: 0.0138 (0.0126)  time: 1.4409  data: 0.0726  max mem: 7369
Epoch: [16] Total time: 0:00:14 (1.4481 s / it)
Epoch: [17]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2032 (0.2032)  loss_classifier: 0.0630 (0.0630)  loss_box_reg: 0.1200 (0.1200)  loss_objectness: 0.0102 (0.0102)  loss_rpn_box_reg: 0.0099 (0.0099)  time: 1.9676  data: 0.4580  max mem: 7369
Epoch: [17]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2292 (0.2377)  loss_classifier: 0.0796 (0.0762)  loss_box_reg: 0.1415 (0.1390)  loss_objectness: 0.0104 (0.0100)  loss_rpn_box_reg: 0.0120 (0.0126)  time: 1.4376  data: 0.0730  max mem: 7369
Epoch: [17] Total time: 0:00:14 (1.4449 s / it)
Epoch: [18]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2862 (0.2862)  loss_classifier: 0.0988 (0.0988)  loss_box_reg: 0.1587 (0.1587)  loss_objectness: 0.0172 (0.0172)  loss_rpn_box_reg: 0.0115 (0.0115)  time: 1.9709  data: 0.4515  max mem: 7369
Epoch: [18]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2544 (0.2619)  loss_classifier: 0.0841 (0.0852)  loss_box_reg: 0.1434 (0.1475)  loss_objectness: 0.0115 (0.0163)  loss_rpn_box_reg: 0.0124 (0.0129)  time: 1.4375  data: 0.0736  max mem: 7369
Epoch: [18] Total time: 0:00:14 (1.4447 s / it)
Epoch: [19]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2796 (0.2796)  loss_classifier: 0.0994 (0.0994)  loss_box_reg: 0.1490 (0.1490)  loss_objectness: 0.0109 (0.0109)  loss_rpn_box_reg: 0.0203 (0.0203)  time: 1.9641  data: 0.4192  max mem: 7369
Epoch: [19]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2796 (0.2852)  loss_classifier: 0.0911 (0.0883)  loss_box_reg: 0.1490 (0.1707)  loss_objectness: 0.0100 (0.0111)  loss_rpn_box_reg: 0.0122 (0.0152)  time: 1.4396  data: 0.0719  max mem: 7369
Epoch: [19] Total time: 0:00:14 (1.4479 s / it)
FOLD 2
--------------------------------
Epoch: [0]  [ 0/10]  eta: 0:00:22  lr: 0.000560  loss: 2.0212 (2.0212)  loss_classifier: 0.5688 (0.5688)  loss_box_reg: 0.1912 (0.1912)  loss_objectness: 1.2033 (1.2033)  loss_rpn_box_reg: 0.0578 (0.0578)  time: 2.2001  data: 0.6171  max mem: 7369
Epoch: [0]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 1.1913 (1.2146)  loss_classifier: 0.3988 (0.4324)  loss_box_reg: 0.2809 (0.3337)  loss_objectness: 0.2339 (0.3987)  loss_rpn_box_reg: 0.0428 (0.0498)  time: 1.4779  data: 0.0897  max mem: 7369
Epoch: [0] Total time: 0:00:14 (1.4882 s / it)
Epoch: [1]  [ 0/10]  eta: 0:00:22  lr: 0.005000  loss: 0.5744 (0.5744)  loss_classifier: 0.1922 (0.1922)  loss_box_reg: 0.1984 (0.1984)  loss_objectness: 0.1385 (0.1385)  loss_rpn_box_reg: 0.0453 (0.0453)  time: 2.2425  data: 0.6807  max mem: 7369
Epoch: [1]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.6169 (0.6817)  loss_classifier: 0.2011 (0.2009)  loss_box_reg: 0.3157 (0.3357)  loss_objectness: 0.0828 (0.0922)  loss_rpn_box_reg: 0.0453 (0.0528)  time: 1.4945  data: 0.0942  max mem: 7369
Epoch: [1] Total time: 0:00:15 (1.5019 s / it)
Epoch: [2]  [ 0/10]  eta: 0:00:20  lr: 0.005000  loss: 0.6641 (0.6641)  loss_classifier: 0.2146 (0.2146)  loss_box_reg: 0.3572 (0.3572)  loss_objectness: 0.0675 (0.0675)  loss_rpn_box_reg: 0.0249 (0.0249)  time: 2.0236  data: 0.4598  max mem: 7369
Epoch: [2]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.4833 (0.5057)  loss_classifier: 0.1681 (0.1597)  loss_box_reg: 0.2453 (0.2573)  loss_objectness: 0.0555 (0.0559)  loss_rpn_box_reg: 0.0249 (0.0329)  time: 1.4622  data: 0.0747  max mem: 7369
Epoch: [2] Total time: 0:00:14 (1.4703 s / it)
Epoch: [3]  [ 0/10]  eta: 0:00:18  lr: 0.005000  loss: 0.5038 (0.5038)  loss_classifier: 0.1500 (0.1500)  loss_box_reg: 0.2672 (0.2672)  loss_objectness: 0.0468 (0.0468)  loss_rpn_box_reg: 0.0398 (0.0398)  time: 1.8965  data: 0.3742  max mem: 7369
Epoch: [3]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.4597 (0.4308)  loss_classifier: 0.1420 (0.1360)  loss_box_reg: 0.2622 (0.2264)  loss_objectness: 0.0287 (0.0379)  loss_rpn_box_reg: 0.0216 (0.0305)  time: 1.4590  data: 0.0669  max mem: 7369
Epoch: [3] Total time: 0:00:14 (1.4666 s / it)
Epoch: [4]  [ 0/10]  eta: 0:00:20  lr: 0.005000  loss: 0.5125 (0.5125)  loss_classifier: 0.1300 (0.1300)  loss_box_reg: 0.2516 (0.2516)  loss_objectness: 0.0690 (0.0690)  loss_rpn_box_reg: 0.0619 (0.0619)  time: 2.0046  data: 0.4698  max mem: 7369
Epoch: [4]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3790 (0.4243)  loss_classifier: 0.1221 (0.1315)  loss_box_reg: 0.2122 (0.2315)  loss_objectness: 0.0304 (0.0325)  loss_rpn_box_reg: 0.0264 (0.0288)  time: 1.4648  data: 0.0738  max mem: 7369
Epoch: [4] Total time: 0:00:14 (1.4727 s / it)
Epoch: [5]  [ 0/10]  eta: 0:00:20  lr: 0.005000  loss: 0.5564 (0.5564)  loss_classifier: 0.1606 (0.1606)  loss_box_reg: 0.2755 (0.2755)  loss_objectness: 0.0654 (0.0654)  loss_rpn_box_reg: 0.0549 (0.0549)  time: 2.0296  data: 0.4914  max mem: 7369
Epoch: [5]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3258 (0.3913)  loss_classifier: 0.1184 (0.1254)  loss_box_reg: 0.1690 (0.2118)  loss_objectness: 0.0184 (0.0282)  loss_rpn_box_reg: 0.0186 (0.0260)  time: 1.4635  data: 0.0762  max mem: 7369
Epoch: [5] Total time: 0:00:14 (1.4711 s / it)
Epoch: [6]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.1738 (0.1738)  loss_classifier: 0.0592 (0.0592)  loss_box_reg: 0.0943 (0.0943)  loss_objectness: 0.0084 (0.0084)  loss_rpn_box_reg: 0.0118 (0.0118)  time: 1.9884  data: 0.4681  max mem: 7369
Epoch: [6]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3145 (0.3404)  loss_classifier: 0.1022 (0.1057)  loss_box_reg: 0.1973 (0.1912)  loss_objectness: 0.0124 (0.0206)  loss_rpn_box_reg: 0.0202 (0.0228)  time: 1.4549  data: 0.0723  max mem: 7369
Epoch: [6] Total time: 0:00:14 (1.4673 s / it)
Epoch: [7]  [ 0/10]  eta: 0:00:23  lr: 0.005000  loss: 0.4046 (0.4046)  loss_classifier: 0.1122 (0.1122)  loss_box_reg: 0.2484 (0.2484)  loss_objectness: 0.0212 (0.0212)  loss_rpn_box_reg: 0.0229 (0.0229)  time: 2.3061  data: 0.7494  max mem: 7369
Epoch: [7]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3273 (0.3511)  loss_classifier: 0.1026 (0.1063)  loss_box_reg: 0.1779 (0.1996)  loss_objectness: 0.0188 (0.0201)  loss_rpn_box_reg: 0.0162 (0.0252)  time: 1.4869  data: 0.1006  max mem: 7369
Epoch: [7] Total time: 0:00:14 (1.4997 s / it)
Epoch: [8]  [ 0/10]  eta: 0:00:21  lr: 0.005000  loss: 0.2312 (0.2312)  loss_classifier: 0.0797 (0.0797)  loss_box_reg: 0.1319 (0.1319)  loss_objectness: 0.0092 (0.0092)  loss_rpn_box_reg: 0.0104 (0.0104)  time: 2.1554  data: 0.6545  max mem: 7369
Epoch: [8]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3029 (0.3055)  loss_classifier: 0.0891 (0.0938)  loss_box_reg: 0.1748 (0.1745)  loss_objectness: 0.0156 (0.0173)  loss_rpn_box_reg: 0.0189 (0.0199)  time: 1.4722  data: 0.0916  max mem: 7369
Epoch: [8] Total time: 0:00:14 (1.4792 s / it)
Epoch: [9]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.3588 (0.3588)  loss_classifier: 0.0857 (0.0857)  loss_box_reg: 0.2278 (0.2278)  loss_objectness: 0.0172 (0.0172)  loss_rpn_box_reg: 0.0281 (0.0281)  time: 1.9365  data: 0.4166  max mem: 7369
Epoch: [9]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.2996 (0.2919)  loss_classifier: 0.0914 (0.0904)  loss_box_reg: 0.1693 (0.1654)  loss_objectness: 0.0144 (0.0165)  loss_rpn_box_reg: 0.0161 (0.0196)  time: 1.4571  data: 0.0707  max mem: 7369
Epoch: [9] Total time: 0:00:14 (1.4650 s / it)
Epoch: [10]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.1766 (0.1766)  loss_classifier: 0.0569 (0.0569)  loss_box_reg: 0.1037 (0.1037)  loss_objectness: 0.0083 (0.0083)  loss_rpn_box_reg: 0.0077 (0.0077)  time: 1.9100  data: 0.3913  max mem: 7369
Epoch: [10]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2962 (0.2902)  loss_classifier: 0.0841 (0.0880)  loss_box_reg: 0.1856 (0.1657)  loss_objectness: 0.0155 (0.0178)  loss_rpn_box_reg: 0.0124 (0.0188)  time: 1.4539  data: 0.0679  max mem: 7369
Epoch: [10] Total time: 0:00:14 (1.4621 s / it)
Epoch: [11]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.3207 (0.3207)  loss_classifier: 0.0864 (0.0864)  loss_box_reg: 0.1996 (0.1996)  loss_objectness: 0.0145 (0.0145)  loss_rpn_box_reg: 0.0202 (0.0202)  time: 1.9954  data: 0.4707  max mem: 7369
Epoch: [11]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2363 (0.2549)  loss_classifier: 0.0778 (0.0796)  loss_box_reg: 0.1312 (0.1458)  loss_objectness: 0.0113 (0.0126)  loss_rpn_box_reg: 0.0161 (0.0169)  time: 1.4573  data: 0.0719  max mem: 7369
Epoch: [11] Total time: 0:00:14 (1.4651 s / it)
Epoch: [12]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.1868 (0.1868)  loss_classifier: 0.0526 (0.0526)  loss_box_reg: 0.1151 (0.1151)  loss_objectness: 0.0093 (0.0093)  loss_rpn_box_reg: 0.0098 (0.0098)  time: 1.9280  data: 0.4313  max mem: 7369
Epoch: [12]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2616 (0.2631)  loss_classifier: 0.0836 (0.0786)  loss_box_reg: 0.1539 (0.1516)  loss_objectness: 0.0113 (0.0145)  loss_rpn_box_reg: 0.0140 (0.0185)  time: 1.4497  data: 0.0715  max mem: 7369
Epoch: [12] Total time: 0:00:14 (1.4567 s / it)
Epoch: [13]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2231 (0.2231)  loss_classifier: 0.0854 (0.0854)  loss_box_reg: 0.1113 (0.1113)  loss_objectness: 0.0209 (0.0209)  loss_rpn_box_reg: 0.0056 (0.0056)  time: 1.9250  data: 0.4130  max mem: 7369
Epoch: [13]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2207 (0.2409)  loss_classifier: 0.0629 (0.0757)  loss_box_reg: 0.1223 (0.1360)  loss_objectness: 0.0104 (0.0130)  loss_rpn_box_reg: 0.0139 (0.0162)  time: 1.4455  data: 0.0667  max mem: 7369
Epoch: [13] Total time: 0:00:14 (1.4569 s / it)
Epoch: [14]  [ 0/10]  eta: 0:00:21  lr: 0.000500  loss: 0.1744 (0.1744)  loss_classifier: 0.0471 (0.0471)  loss_box_reg: 0.1084 (0.1084)  loss_objectness: 0.0045 (0.0045)  loss_rpn_box_reg: 0.0144 (0.0144)  time: 2.1734  data: 0.6129  max mem: 7369
Epoch: [14]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2523 (0.2420)  loss_classifier: 0.0735 (0.0740)  loss_box_reg: 0.1493 (0.1382)  loss_objectness: 0.0117 (0.0135)  loss_rpn_box_reg: 0.0147 (0.0164)  time: 1.4805  data: 0.0912  max mem: 7369
Epoch: [14] Total time: 0:00:14 (1.4916 s / it)
Epoch: [15]  [ 0/10]  eta: 0:00:22  lr: 0.000500  loss: 0.2803 (0.2803)  loss_classifier: 0.0965 (0.0965)  loss_box_reg: 0.1623 (0.1623)  loss_objectness: 0.0083 (0.0083)  loss_rpn_box_reg: 0.0131 (0.0131)  time: 2.2255  data: 0.6650  max mem: 7369
Epoch: [15]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2376 (0.2296)  loss_classifier: 0.0692 (0.0718)  loss_box_reg: 0.1391 (0.1295)  loss_objectness: 0.0106 (0.0119)  loss_rpn_box_reg: 0.0118 (0.0164)  time: 1.4822  data: 0.0951  max mem: 7369
Epoch: [15] Total time: 0:00:14 (1.4899 s / it)
Epoch: [16]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.3165 (0.3165)  loss_classifier: 0.0984 (0.0984)  loss_box_reg: 0.1833 (0.1833)  loss_objectness: 0.0204 (0.0204)  loss_rpn_box_reg: 0.0144 (0.0144)  time: 1.9439  data: 0.4210  max mem: 7369
Epoch: [16]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2462 (0.2452)  loss_classifier: 0.0723 (0.0765)  loss_box_reg: 0.1405 (0.1385)  loss_objectness: 0.0130 (0.0136)  loss_rpn_box_reg: 0.0136 (0.0166)  time: 1.4530  data: 0.0714  max mem: 7369
Epoch: [16] Total time: 0:00:14 (1.4613 s / it)
Epoch: [17]  [ 0/10]  eta: 0:00:20  lr: 0.000500  loss: 0.3604 (0.3604)  loss_classifier: 0.1065 (0.1065)  loss_box_reg: 0.2134 (0.2134)  loss_objectness: 0.0224 (0.0224)  loss_rpn_box_reg: 0.0181 (0.0181)  time: 2.0079  data: 0.4816  max mem: 7369
Epoch: [17]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2159 (0.2438)  loss_classifier: 0.0750 (0.0763)  loss_box_reg: 0.1277 (0.1392)  loss_objectness: 0.0080 (0.0116)  loss_rpn_box_reg: 0.0127 (0.0167)  time: 1.4640  data: 0.0763  max mem: 7369
Epoch: [17] Total time: 0:00:14 (1.4712 s / it)
Epoch: [18]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.1308 (0.1308)  loss_classifier: 0.0385 (0.0385)  loss_box_reg: 0.0729 (0.0729)  loss_objectness: 0.0096 (0.0096)  loss_rpn_box_reg: 0.0097 (0.0097)  time: 1.9142  data: 0.4063  max mem: 7369
Epoch: [18]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2206 (0.2528)  loss_classifier: 0.0635 (0.0780)  loss_box_reg: 0.1352 (0.1466)  loss_objectness: 0.0097 (0.0113)  loss_rpn_box_reg: 0.0126 (0.0169)  time: 1.4567  data: 0.0699  max mem: 7369
Epoch: [18] Total time: 0:00:14 (1.4656 s / it)
Epoch: [19]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.1251 (0.1251)  loss_classifier: 0.0379 (0.0379)  loss_box_reg: 0.0748 (0.0748)  loss_objectness: 0.0066 (0.0066)  loss_rpn_box_reg: 0.0058 (0.0058)  time: 1.9700  data: 0.4043  max mem: 7369
Epoch: [19]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.1981 (0.2517)  loss_classifier: 0.0741 (0.0739)  loss_box_reg: 0.1096 (0.1484)  loss_objectness: 0.0119 (0.0130)  loss_rpn_box_reg: 0.0100 (0.0164)  time: 1.4655  data: 0.0699  max mem: 7369
Epoch: [19] Total time: 0:00:14 (1.4734 s / it)
FOLD 3
--------------------------------
Epoch: [0]  [ 0/10]  eta: 0:00:19  lr: 0.000560  loss: 1.7619 (1.7619)  loss_classifier: 0.6075 (0.6075)  loss_box_reg: 0.3803 (0.3803)  loss_objectness: 0.7338 (0.7338)  loss_rpn_box_reg: 0.0404 (0.0404)  time: 1.9245  data: 0.4078  max mem: 7369
Epoch: [0]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 1.1779 (1.2150)  loss_classifier: 0.4669 (0.4465)  loss_box_reg: 0.3803 (0.3815)  loss_objectness: 0.2125 (0.3380)  loss_rpn_box_reg: 0.0457 (0.0490)  time: 1.4554  data: 0.0722  max mem: 7369
Epoch: [0] Total time: 0:00:14 (1.4692 s / it)
Epoch: [1]  [ 0/10]  eta: 0:00:22  lr: 0.005000  loss: 0.8010 (0.8010)  loss_classifier: 0.3474 (0.3474)  loss_box_reg: 0.3663 (0.3663)  loss_objectness: 0.0589 (0.0589)  loss_rpn_box_reg: 0.0284 (0.0284)  time: 2.2664  data: 0.7067  max mem: 7369
Epoch: [1]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.7403 (0.7507)  loss_classifier: 0.2406 (0.2551)  loss_box_reg: 0.3447 (0.3680)  loss_objectness: 0.0687 (0.0842)  loss_rpn_box_reg: 0.0433 (0.0434)  time: 1.4934  data: 0.0989  max mem: 7369
Epoch: [1] Total time: 0:00:15 (1.5004 s / it)
Epoch: [2]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.5693 (0.5693)  loss_classifier: 0.1802 (0.1802)  loss_box_reg: 0.3092 (0.3092)  loss_objectness: 0.0560 (0.0560)  loss_rpn_box_reg: 0.0238 (0.0238)  time: 1.9262  data: 0.3974  max mem: 7369
Epoch: [2]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.4989 (0.5093)  loss_classifier: 0.1513 (0.1632)  loss_box_reg: 0.2550 (0.2629)  loss_objectness: 0.0522 (0.0519)  loss_rpn_box_reg: 0.0277 (0.0314)  time: 1.4548  data: 0.0682  max mem: 7369
Epoch: [2] Total time: 0:00:14 (1.4618 s / it)
Epoch: [3]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.5415 (0.5415)  loss_classifier: 0.1485 (0.1485)  loss_box_reg: 0.2530 (0.2530)  loss_objectness: 0.0661 (0.0661)  loss_rpn_box_reg: 0.0738 (0.0738)  time: 1.9576  data: 0.4693  max mem: 7369
Epoch: [3]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.4107 (0.4335)  loss_classifier: 0.1306 (0.1396)  loss_box_reg: 0.2177 (0.2268)  loss_objectness: 0.0405 (0.0385)  loss_rpn_box_reg: 0.0213 (0.0286)  time: 1.4563  data: 0.0738  max mem: 7369
Epoch: [3] Total time: 0:00:14 (1.4636 s / it)
Epoch: [4]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.3033 (0.3033)  loss_classifier: 0.1034 (0.1034)  loss_box_reg: 0.1687 (0.1687)  loss_objectness: 0.0190 (0.0190)  loss_rpn_box_reg: 0.0122 (0.0122)  time: 1.9300  data: 0.4218  max mem: 7369
Epoch: [4]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3822 (0.4024)  loss_classifier: 0.1302 (0.1372)  loss_box_reg: 0.2072 (0.2117)  loss_objectness: 0.0245 (0.0302)  loss_rpn_box_reg: 0.0183 (0.0233)  time: 1.4569  data: 0.0721  max mem: 7369
Epoch: [4] Total time: 0:00:14 (1.4639 s / it)
Epoch: [5]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.3716 (0.3716)  loss_classifier: 0.1177 (0.1177)  loss_box_reg: 0.2199 (0.2199)  loss_objectness: 0.0195 (0.0195)  loss_rpn_box_reg: 0.0145 (0.0145)  time: 1.9010  data: 0.4041  max mem: 7369
Epoch: [5]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3612 (0.3497)  loss_classifier: 0.1177 (0.1128)  loss_box_reg: 0.2068 (0.1922)  loss_objectness: 0.0218 (0.0242)  loss_rpn_box_reg: 0.0192 (0.0206)  time: 1.4617  data: 0.0712  max mem: 7369
Epoch: [5] Total time: 0:00:14 (1.4693 s / it)
Epoch: [6]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.5653 (0.5653)  loss_classifier: 0.1675 (0.1675)  loss_box_reg: 0.2924 (0.2924)  loss_objectness: 0.0523 (0.0523)  loss_rpn_box_reg: 0.0531 (0.0531)  time: 1.9726  data: 0.4679  max mem: 7369
Epoch: [6]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3022 (0.3577)  loss_classifier: 0.1194 (0.1179)  loss_box_reg: 0.1698 (0.1986)  loss_objectness: 0.0190 (0.0214)  loss_rpn_box_reg: 0.0185 (0.0197)  time: 1.4587  data: 0.0745  max mem: 7369
Epoch: [6] Total time: 0:00:14 (1.4658 s / it)
Epoch: [7]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.4132 (0.4132)  loss_classifier: 0.1385 (0.1385)  loss_box_reg: 0.2413 (0.2413)  loss_objectness: 0.0188 (0.0188)  loss_rpn_box_reg: 0.0146 (0.0146)  time: 1.9996  data: 0.4654  max mem: 7369
Epoch: [7]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3235 (0.3347)  loss_classifier: 0.1006 (0.1117)  loss_box_reg: 0.1596 (0.1852)  loss_objectness: 0.0151 (0.0187)  loss_rpn_box_reg: 0.0146 (0.0190)  time: 1.4605  data: 0.0739  max mem: 7369
Epoch: [7] Total time: 0:00:14 (1.4737 s / it)
Epoch: [8]  [ 0/10]  eta: 0:00:22  lr: 0.005000  loss: 0.2666 (0.2666)  loss_classifier: 0.1002 (0.1002)  loss_box_reg: 0.1353 (0.1353)  loss_objectness: 0.0191 (0.0191)  loss_rpn_box_reg: 0.0120 (0.0120)  time: 2.2319  data: 0.6681  max mem: 7369
Epoch: [8]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.3010 (0.3103)  loss_classifier: 0.1015 (0.1027)  loss_box_reg: 0.1672 (0.1724)  loss_objectness: 0.0153 (0.0174)  loss_rpn_box_reg: 0.0120 (0.0178)  time: 1.4848  data: 0.0941  max mem: 7369
Epoch: [8] Total time: 0:00:14 (1.4921 s / it)
Epoch: [9]  [ 0/10]  eta: 0:00:19  lr: 0.005000  loss: 0.2201 (0.2201)  loss_classifier: 0.0786 (0.0786)  loss_box_reg: 0.1212 (0.1212)  loss_objectness: 0.0125 (0.0125)  loss_rpn_box_reg: 0.0078 (0.0078)  time: 1.9154  data: 0.4208  max mem: 7369
Epoch: [9]  [ 9/10]  eta: 0:00:01  lr: 0.005000  loss: 0.2684 (0.3121)  loss_classifier: 0.0901 (0.1030)  loss_box_reg: 0.1622 (0.1774)  loss_objectness: 0.0125 (0.0152)  loss_rpn_box_reg: 0.0114 (0.0166)  time: 1.4519  data: 0.0702  max mem: 7369
Epoch: [9] Total time: 0:00:14 (1.4604 s / it)
Epoch: [10]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2696 (0.2696)  loss_classifier: 0.0856 (0.0856)  loss_box_reg: 0.1620 (0.1620)  loss_objectness: 0.0131 (0.0131)  loss_rpn_box_reg: 0.0088 (0.0088)  time: 1.9451  data: 0.4379  max mem: 7369
Epoch: [10]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2696 (0.2810)  loss_classifier: 0.0755 (0.0861)  loss_box_reg: 0.1791 (0.1688)  loss_objectness: 0.0124 (0.0116)  loss_rpn_box_reg: 0.0134 (0.0145)  time: 1.4572  data: 0.0720  max mem: 7369
Epoch: [10] Total time: 0:00:14 (1.4644 s / it)
Epoch: [11]  [ 0/10]  eta: 0:00:20  lr: 0.000500  loss: 0.3691 (0.3691)  loss_classifier: 0.1087 (0.1087)  loss_box_reg: 0.1902 (0.1902)  loss_objectness: 0.0258 (0.0258)  loss_rpn_box_reg: 0.0443 (0.0443)  time: 2.0256  data: 0.4861  max mem: 7369
Epoch: [11]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2592 (0.2703)  loss_classifier: 0.0871 (0.0855)  loss_box_reg: 0.1558 (0.1561)  loss_objectness: 0.0142 (0.0141)  loss_rpn_box_reg: 0.0101 (0.0146)  time: 1.4608  data: 0.0733  max mem: 7369
Epoch: [11] Total time: 0:00:14 (1.4679 s / it)
Epoch: [12]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2408 (0.2408)  loss_classifier: 0.0792 (0.0792)  loss_box_reg: 0.1305 (0.1305)  loss_objectness: 0.0134 (0.0134)  loss_rpn_box_reg: 0.0177 (0.0177)  time: 1.9100  data: 0.4121  max mem: 7369
Epoch: [12]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2410 (0.2781)  loss_classifier: 0.0792 (0.0906)  loss_box_reg: 0.1407 (0.1598)  loss_objectness: 0.0126 (0.0129)  loss_rpn_box_reg: 0.0107 (0.0147)  time: 1.4582  data: 0.0731  max mem: 7369
Epoch: [12] Total time: 0:00:14 (1.4663 s / it)
Epoch: [13]  [ 0/10]  eta: 0:00:18  lr: 0.000500  loss: 0.2389 (0.2389)  loss_classifier: 0.0596 (0.0596)  loss_box_reg: 0.1457 (0.1457)  loss_objectness: 0.0136 (0.0136)  loss_rpn_box_reg: 0.0199 (0.0199)  time: 1.8952  data: 0.3938  max mem: 7369
Epoch: [13]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2389 (0.2632)  loss_classifier: 0.0749 (0.0848)  loss_box_reg: 0.1457 (0.1521)  loss_objectness: 0.0105 (0.0123)  loss_rpn_box_reg: 0.0099 (0.0140)  time: 1.4489  data: 0.0677  max mem: 7369
Epoch: [13] Total time: 0:00:14 (1.4585 s / it)
Epoch: [14]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.1890 (0.1890)  loss_classifier: 0.0594 (0.0594)  loss_box_reg: 0.1127 (0.1127)  loss_objectness: 0.0062 (0.0062)  loss_rpn_box_reg: 0.0107 (0.0107)  time: 1.9969  data: 0.4860  max mem: 7369
Epoch: [14]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2659 (0.2753)  loss_classifier: 0.0872 (0.0879)  loss_box_reg: 0.1555 (0.1506)  loss_objectness: 0.0114 (0.0138)  loss_rpn_box_reg: 0.0112 (0.0230)  time: 1.4609  data: 0.0786  max mem: 7369
Epoch: [14] Total time: 0:00:14 (1.4741 s / it)
Epoch: [15]  [ 0/10]  eta: 0:00:21  lr: 0.000500  loss: 0.2110 (0.2110)  loss_classifier: 0.0925 (0.0925)  loss_box_reg: 0.1094 (0.1094)  loss_objectness: 0.0052 (0.0052)  loss_rpn_box_reg: 0.0039 (0.0039)  time: 2.1985  data: 0.6196  max mem: 7369
Epoch: [15]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2110 (0.2717)  loss_classifier: 0.0750 (0.0879)  loss_box_reg: 0.1163 (0.1556)  loss_objectness: 0.0157 (0.0136)  loss_rpn_box_reg: 0.0110 (0.0146)  time: 1.4786  data: 0.0917  max mem: 7369
Epoch: [15] Total time: 0:00:14 (1.4858 s / it)
Epoch: [16]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2004 (0.2004)  loss_classifier: 0.0648 (0.0648)  loss_box_reg: 0.1179 (0.1179)  loss_objectness: 0.0093 (0.0093)  loss_rpn_box_reg: 0.0084 (0.0084)  time: 1.9765  data: 0.4662  max mem: 7369
Epoch: [16]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2295 (0.2598)  loss_classifier: 0.0665 (0.0837)  loss_box_reg: 0.1404 (0.1480)  loss_objectness: 0.0142 (0.0133)  loss_rpn_box_reg: 0.0105 (0.0148)  time: 1.4544  data: 0.0736  max mem: 7369
Epoch: [16] Total time: 0:00:14 (1.4614 s / it)
Epoch: [17]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2045 (0.2045)  loss_classifier: 0.0923 (0.0923)  loss_box_reg: 0.0915 (0.0915)  loss_objectness: 0.0145 (0.0145)  loss_rpn_box_reg: 0.0062 (0.0062)  time: 1.9334  data: 0.4134  max mem: 7369
Epoch: [17]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2392 (0.2470)  loss_classifier: 0.0873 (0.0806)  loss_box_reg: 0.1274 (0.1427)  loss_objectness: 0.0109 (0.0100)  loss_rpn_box_reg: 0.0094 (0.0137)  time: 1.4543  data: 0.0697  max mem: 7369
Epoch: [17] Total time: 0:00:14 (1.4611 s / it)
Epoch: [18]  [ 0/10]  eta: 0:00:19  lr: 0.000500  loss: 0.2953 (0.2953)  loss_classifier: 0.0852 (0.0852)  loss_box_reg: 0.1806 (0.1806)  loss_objectness: 0.0123 (0.0123)  loss_rpn_box_reg: 0.0172 (0.0172)  time: 1.9323  data: 0.4118  max mem: 7369
Epoch: [18]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2839 (0.2647)  loss_classifier: 0.0852 (0.0862)  loss_box_reg: 0.1397 (0.1510)  loss_objectness: 0.0119 (0.0120)  loss_rpn_box_reg: 0.0111 (0.0154)  time: 1.4568  data: 0.0714  max mem: 7369
Epoch: [18] Total time: 0:00:14 (1.4641 s / it)
Epoch: [19]  [ 0/10]  eta: 0:00:18  lr: 0.000500  loss: 0.1764 (0.1764)  loss_classifier: 0.0777 (0.0777)  loss_box_reg: 0.0859 (0.0859)  loss_objectness: 0.0101 (0.0101)  loss_rpn_box_reg: 0.0028 (0.0028)  time: 1.8826  data: 0.3678  max mem: 7369
Epoch: [19]  [ 9/10]  eta: 0:00:01  lr: 0.000500  loss: 0.2324 (0.2820)  loss_classifier: 0.0777 (0.0905)  loss_box_reg: 0.1346 (0.1627)  loss_objectness: 0.0119 (0.0137)  loss_rpn_box_reg: 0.0105 (0.0152)  time: 1.4521  data: 0.0665  max mem: 7369
Epoch: [19] Total time: 0:00:14 (1.4594 s / it)

Lo unico modificado frente al codigo proporcionado por kaggle, es que usamos 20 capas, 4 epocas y dos clases, en vez de realizar 50 ya que sino tardaría mucho.

Además, la parte de evaluate la hemos eliminado porque no nos interesa.

Esta parte del codigo nos daba error porque al eliminar evaluate de la parte importar librerias eliminamos sin querer la de train one epoch,como nos dimos cuenta la importamos cargando de nuevo el codigo al inicio del todo junto con las demas librerias.

Part 6: Final training¶

In [11]:
num_epochs = 20

# our dataset has two classes only - background and crater
num_classes = 2
# use our dataset and defined transformations
dataset = CraterDataset('/content/craters/train', get_transform(train=True))
dataset_test = CraterDataset('/content/craters/test', get_transform(train=False))

# define training and validation data loaders
data_loader = torch.utils.data.DataLoader(
        dataset, batch_size=8, shuffle=True, num_workers=2,
    collate_fn=utils.collate_fn)

data_loader_test = torch.utils.data.DataLoader(
    dataset_test, batch_size=1, shuffle=False, num_workers=2,
    collate_fn=utils.collate_fn)

# get the model using our helper function
model = get_model_bbox(num_classes)

'''
Use this to reset all trainable weights
model.apply(reset_weights)
'''

# move model to the right device
model.to(device)

# construct an optimizer
params = [p for p in model.parameters() if p.requires_grad]
optimizer = torch.optim.SGD(params, lr=0.005,  # Feel free to play with values
                            momentum=0.9, weight_decay=0)

# Defining learning rate scheduler
lr_scheduler = torch.optim.lr_scheduler.StepLR(optimizer,
                                                step_size=20,
                                                gamma=0.2)


result_mAP = []
best_epoch = None

# Let's train!
for epoch in range(num_epochs):


    # train for one epoch, printing every 10 iterations
    train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=50)
    # update the learning rate
    lr_scheduler.step()
Epoch: [0]  [ 0/13]  eta: 0:00:26  lr: 0.000421  loss: 2.5979 (2.5979)  loss_classifier: 0.5396 (0.5396)  loss_box_reg: 0.3977 (0.3977)  loss_objectness: 1.6073 (1.6073)  loss_rpn_box_reg: 0.0534 (0.0534)  time: 2.0385  data: 0.4868  max mem: 7369
Epoch: [0]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.9283 (1.1785)  loss_classifier: 0.3549 (0.3691)  loss_box_reg: 0.3117 (0.3483)  loss_objectness: 0.2441 (0.4174)  loss_rpn_box_reg: 0.0399 (0.0436)  time: 1.4750  data: 0.0685  max mem: 7369
Epoch: [0] Total time: 0:00:19 (1.4854 s / it)
Epoch: [1]  [ 0/13]  eta: 0:00:30  lr: 0.005000  loss: 0.9539 (0.9539)  loss_classifier: 0.2209 (0.2209)  loss_box_reg: 0.4332 (0.4332)  loss_objectness: 0.1759 (0.1759)  loss_rpn_box_reg: 0.1239 (0.1239)  time: 2.3520  data: 0.7539  max mem: 7369
Epoch: [1]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.7048 (0.7028)  loss_classifier: 0.2284 (0.2212)  loss_box_reg: 0.3208 (0.3296)  loss_objectness: 0.0745 (0.1031)  loss_rpn_box_reg: 0.0296 (0.0488)  time: 1.5421  data: 0.0863  max mem: 7369
Epoch: [1] Total time: 0:00:20 (1.5477 s / it)
Epoch: [2]  [ 0/13]  eta: 0:00:25  lr: 0.005000  loss: 0.4429 (0.4429)  loss_classifier: 0.1178 (0.1178)  loss_box_reg: 0.2176 (0.2176)  loss_objectness: 0.0959 (0.0959)  loss_rpn_box_reg: 0.0116 (0.0116)  time: 1.9419  data: 0.4030  max mem: 7369
Epoch: [2]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.4693 (0.4944)  loss_classifier: 0.1461 (0.1604)  loss_box_reg: 0.2246 (0.2358)  loss_objectness: 0.0472 (0.0641)  loss_rpn_box_reg: 0.0291 (0.0341)  time: 1.4879  data: 0.0632  max mem: 7369
Epoch: [2] Total time: 0:00:19 (1.4966 s / it)
Epoch: [3]  [ 0/13]  eta: 0:00:28  lr: 0.005000  loss: 0.5357 (0.5357)  loss_classifier: 0.1669 (0.1669)  loss_box_reg: 0.2750 (0.2750)  loss_objectness: 0.0445 (0.0445)  loss_rpn_box_reg: 0.0494 (0.0494)  time: 2.1988  data: 0.6736  max mem: 7369
Epoch: [3]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.4065 (0.3889)  loss_classifier: 0.1414 (0.1292)  loss_box_reg: 0.1959 (0.1890)  loss_objectness: 0.0414 (0.0417)  loss_rpn_box_reg: 0.0245 (0.0289)  time: 1.4845  data: 0.0836  max mem: 7369
Epoch: [3] Total time: 0:00:19 (1.4904 s / it)
Epoch: [4]  [ 0/13]  eta: 0:00:25  lr: 0.005000  loss: 0.4367 (0.4367)  loss_classifier: 0.1322 (0.1322)  loss_box_reg: 0.2330 (0.2330)  loss_objectness: 0.0362 (0.0362)  loss_rpn_box_reg: 0.0353 (0.0353)  time: 1.9638  data: 0.4474  max mem: 7369
Epoch: [4]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.4367 (0.3988)  loss_classifier: 0.1322 (0.1335)  loss_box_reg: 0.1907 (0.2022)  loss_objectness: 0.0315 (0.0353)  loss_rpn_box_reg: 0.0221 (0.0279)  time: 1.4706  data: 0.0632  max mem: 7369
Epoch: [4] Total time: 0:00:19 (1.4794 s / it)
Epoch: [5]  [ 0/13]  eta: 0:00:27  lr: 0.005000  loss: 0.3435 (0.3435)  loss_classifier: 0.1177 (0.1177)  loss_box_reg: 0.1647 (0.1647)  loss_objectness: 0.0352 (0.0352)  loss_rpn_box_reg: 0.0258 (0.0258)  time: 2.0805  data: 0.5584  max mem: 7369
Epoch: [5]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.3813 (0.3783)  loss_classifier: 0.1350 (0.1238)  loss_box_reg: 0.1858 (0.1950)  loss_objectness: 0.0292 (0.0329)  loss_rpn_box_reg: 0.0258 (0.0266)  time: 1.4868  data: 0.0729  max mem: 7369
Epoch: [5] Total time: 0:00:19 (1.4922 s / it)
Epoch: [6]  [ 0/13]  eta: 0:00:25  lr: 0.005000  loss: 0.5397 (0.5397)  loss_classifier: 0.1678 (0.1678)  loss_box_reg: 0.2547 (0.2547)  loss_objectness: 0.0675 (0.0675)  loss_rpn_box_reg: 0.0497 (0.0497)  time: 1.9935  data: 0.4532  max mem: 7369
Epoch: [6]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.3677 (0.3523)  loss_classifier: 0.1189 (0.1139)  loss_box_reg: 0.2047 (0.1912)  loss_objectness: 0.0202 (0.0250)  loss_rpn_box_reg: 0.0227 (0.0222)  time: 1.4771  data: 0.0630  max mem: 7369
Epoch: [6] Total time: 0:00:19 (1.4876 s / it)
Epoch: [7]  [ 0/13]  eta: 0:00:28  lr: 0.005000  loss: 0.3347 (0.3347)  loss_classifier: 0.1106 (0.1106)  loss_box_reg: 0.1987 (0.1987)  loss_objectness: 0.0121 (0.0121)  loss_rpn_box_reg: 0.0134 (0.0134)  time: 2.2127  data: 0.7033  max mem: 7369
Epoch: [7]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.3347 (0.3413)  loss_classifier: 0.1083 (0.1116)  loss_box_reg: 0.1874 (0.1848)  loss_objectness: 0.0185 (0.0220)  loss_rpn_box_reg: 0.0155 (0.0230)  time: 1.4928  data: 0.0860  max mem: 7369
Epoch: [7] Total time: 0:00:19 (1.4984 s / it)
Epoch: [8]  [ 0/13]  eta: 0:00:25  lr: 0.005000  loss: 0.4744 (0.4744)  loss_classifier: 0.1503 (0.1503)  loss_box_reg: 0.2326 (0.2326)  loss_objectness: 0.0447 (0.0447)  loss_rpn_box_reg: 0.0469 (0.0469)  time: 1.9774  data: 0.4549  max mem: 7369
Epoch: [8]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.3113 (0.3110)  loss_classifier: 0.1027 (0.0988)  loss_box_reg: 0.1797 (0.1698)  loss_objectness: 0.0184 (0.0214)  loss_rpn_box_reg: 0.0177 (0.0211)  time: 1.4684  data: 0.0648  max mem: 7369
Epoch: [8] Total time: 0:00:19 (1.4774 s / it)
Epoch: [9]  [ 0/13]  eta: 0:00:27  lr: 0.005000  loss: 0.3412 (0.3412)  loss_classifier: 0.1104 (0.1104)  loss_box_reg: 0.1975 (0.1975)  loss_objectness: 0.0163 (0.0163)  loss_rpn_box_reg: 0.0170 (0.0170)  time: 2.1351  data: 0.5726  max mem: 7369
Epoch: [9]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.2910 (0.2794)  loss_classifier: 0.0966 (0.0894)  loss_box_reg: 0.1632 (0.1551)  loss_objectness: 0.0182 (0.0166)  loss_rpn_box_reg: 0.0170 (0.0183)  time: 1.4842  data: 0.0741  max mem: 7369
Epoch: [9] Total time: 0:00:19 (1.4906 s / it)
Epoch: [10]  [ 0/13]  eta: 0:00:25  lr: 0.005000  loss: 0.4136 (0.4136)  loss_classifier: 0.1215 (0.1215)  loss_box_reg: 0.2451 (0.2451)  loss_objectness: 0.0233 (0.0233)  loss_rpn_box_reg: 0.0236 (0.0236)  time: 1.9568  data: 0.4247  max mem: 7369
Epoch: [10]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.2681 (0.2750)  loss_classifier: 0.0906 (0.0934)  loss_box_reg: 0.1493 (0.1490)  loss_objectness: 0.0134 (0.0157)  loss_rpn_box_reg: 0.0145 (0.0169)  time: 1.4796  data: 0.0638  max mem: 7369
Epoch: [10] Total time: 0:00:19 (1.4900 s / it)
Epoch: [11]  [ 0/13]  eta: 0:00:29  lr: 0.005000  loss: 0.3319 (0.3319)  loss_classifier: 0.0956 (0.0956)  loss_box_reg: 0.2068 (0.2068)  loss_objectness: 0.0114 (0.0114)  loss_rpn_box_reg: 0.0181 (0.0181)  time: 2.2555  data: 0.6524  max mem: 7369
Epoch: [11]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.2705 (0.2566)  loss_classifier: 0.0849 (0.0826)  loss_box_reg: 0.1370 (0.1430)  loss_objectness: 0.0147 (0.0144)  loss_rpn_box_reg: 0.0163 (0.0166)  time: 1.4986  data: 0.0805  max mem: 7369
Epoch: [11] Total time: 0:00:19 (1.5047 s / it)
Epoch: [12]  [ 0/13]  eta: 0:00:25  lr: 0.005000  loss: 0.3168 (0.3168)  loss_classifier: 0.0963 (0.0963)  loss_box_reg: 0.1926 (0.1926)  loss_objectness: 0.0113 (0.0113)  loss_rpn_box_reg: 0.0166 (0.0166)  time: 1.9937  data: 0.4564  max mem: 7369
Epoch: [12]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.2266 (0.2392)  loss_classifier: 0.0739 (0.0762)  loss_box_reg: 0.1336 (0.1350)  loss_objectness: 0.0113 (0.0129)  loss_rpn_box_reg: 0.0127 (0.0151)  time: 1.4790  data: 0.0656  max mem: 7369
Epoch: [12] Total time: 0:00:19 (1.4894 s / it)
Epoch: [13]  [ 0/13]  eta: 0:00:28  lr: 0.005000  loss: 0.3093 (0.3093)  loss_classifier: 0.1068 (0.1068)  loss_box_reg: 0.1649 (0.1649)  loss_objectness: 0.0147 (0.0147)  loss_rpn_box_reg: 0.0228 (0.0228)  time: 2.2139  data: 0.6727  max mem: 7369
Epoch: [13]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.2253 (0.2282)  loss_classifier: 0.0703 (0.0740)  loss_box_reg: 0.1157 (0.1278)  loss_objectness: 0.0098 (0.0115)  loss_rpn_box_reg: 0.0144 (0.0148)  time: 1.4911  data: 0.0830  max mem: 7369
Epoch: [13] Total time: 0:00:19 (1.4966 s / it)
Epoch: [14]  [ 0/13]  eta: 0:00:25  lr: 0.005000  loss: 0.2113 (0.2113)  loss_classifier: 0.0752 (0.0752)  loss_box_reg: 0.1189 (0.1189)  loss_objectness: 0.0058 (0.0058)  loss_rpn_box_reg: 0.0114 (0.0114)  time: 1.9380  data: 0.4296  max mem: 7369
Epoch: [14]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.2113 (0.2208)  loss_classifier: 0.0736 (0.0734)  loss_box_reg: 0.1182 (0.1245)  loss_objectness: 0.0074 (0.0096)  loss_rpn_box_reg: 0.0114 (0.0133)  time: 1.4762  data: 0.0647  max mem: 7369
Epoch: [14] Total time: 0:00:19 (1.4852 s / it)
Epoch: [15]  [ 0/13]  eta: 0:00:29  lr: 0.005000  loss: 0.3012 (0.3012)  loss_classifier: 0.0777 (0.0777)  loss_box_reg: 0.1857 (0.1857)  loss_objectness: 0.0167 (0.0167)  loss_rpn_box_reg: 0.0211 (0.0211)  time: 2.2596  data: 0.7188  max mem: 7369
Epoch: [15]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.2236 (0.2190)  loss_classifier: 0.0727 (0.0678)  loss_box_reg: 0.1248 (0.1276)  loss_objectness: 0.0107 (0.0102)  loss_rpn_box_reg: 0.0099 (0.0134)  time: 1.4930  data: 0.0849  max mem: 7369
Epoch: [15] Total time: 0:00:19 (1.4985 s / it)
Epoch: [16]  [ 0/13]  eta: 0:00:25  lr: 0.005000  loss: 0.1979 (0.1979)  loss_classifier: 0.0696 (0.0696)  loss_box_reg: 0.1099 (0.1099)  loss_objectness: 0.0084 (0.0084)  loss_rpn_box_reg: 0.0099 (0.0099)  time: 1.9440  data: 0.4269  max mem: 7369
Epoch: [16]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.2275 (0.2060)  loss_classifier: 0.0705 (0.0678)  loss_box_reg: 0.1279 (0.1178)  loss_objectness: 0.0084 (0.0087)  loss_rpn_box_reg: 0.0099 (0.0117)  time: 1.4731  data: 0.0626  max mem: 7369
Epoch: [16] Total time: 0:00:19 (1.4822 s / it)
Epoch: [17]  [ 0/13]  eta: 0:00:28  lr: 0.005000  loss: 0.1367 (0.1367)  loss_classifier: 0.0448 (0.0448)  loss_box_reg: 0.0738 (0.0738)  loss_objectness: 0.0066 (0.0066)  loss_rpn_box_reg: 0.0115 (0.0115)  time: 2.1805  data: 0.6252  max mem: 7369
Epoch: [17]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.1765 (0.1916)  loss_classifier: 0.0557 (0.0605)  loss_box_reg: 0.1130 (0.1102)  loss_objectness: 0.0077 (0.0093)  loss_rpn_box_reg: 0.0096 (0.0115)  time: 1.4898  data: 0.0771  max mem: 7369
Epoch: [17] Total time: 0:00:19 (1.4956 s / it)
Epoch: [18]  [ 0/13]  eta: 0:00:26  lr: 0.005000  loss: 0.2897 (0.2897)  loss_classifier: 0.0791 (0.0791)  loss_box_reg: 0.1542 (0.1542)  loss_objectness: 0.0191 (0.0191)  loss_rpn_box_reg: 0.0374 (0.0374)  time: 2.0007  data: 0.4800  max mem: 7369
Epoch: [18]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.1775 (0.1954)  loss_classifier: 0.0535 (0.0592)  loss_box_reg: 0.1138 (0.1151)  loss_objectness: 0.0091 (0.0098)  loss_rpn_box_reg: 0.0075 (0.0113)  time: 1.4757  data: 0.0658  max mem: 7369
Epoch: [18] Total time: 0:00:19 (1.4839 s / it)
Epoch: [19]  [ 0/13]  eta: 0:00:30  lr: 0.005000  loss: 0.2967 (0.2967)  loss_classifier: 0.0798 (0.0798)  loss_box_reg: 0.1609 (0.1609)  loss_objectness: 0.0163 (0.0163)  loss_rpn_box_reg: 0.0397 (0.0397)  time: 2.3162  data: 0.7499  max mem: 7369
Epoch: [19]  [12/13]  eta: 0:00:01  lr: 0.005000  loss: 0.1864 (0.1879)  loss_classifier: 0.0552 (0.0571)  loss_box_reg: 0.1126 (0.1125)  loss_objectness: 0.0063 (0.0071)  loss_rpn_box_reg: 0.0096 (0.0112)  time: 1.4971  data: 0.0855  max mem: 7369
Epoch: [19] Total time: 0:00:19 (1.5027 s / it)

Aqui usamos 20 capas y 2 clases.

Part 7. Interference¶

In [12]:
dataset_test = CraterDataset('/content/craters/test', get_transform(train=False))

data_loader_test = torch.utils.data.DataLoader(
    dataset_test, batch_size=1, shuffle=False, num_workers=2,
    collate_fn=utils.collate_fn)

model = get_model_bbox(num_classes)
In [13]:
# Define colors for bounding boxes
color_inference = np.array([0.0,255.0,0.0])
color_label = np.array([255.0,0.0,0.0])

# Score value thershold for displaying predictions
detection_threshold = 0.7
# to count the total number of images iterated through
frame_count = 0
# to keep adding the FPS for each image
total_fps = 0

!mkdir ./results
In [15]:
model.eval()
for i, data in enumerate(data_loader_test):
    # get the image file name for predictions file name
    image_name = 'image no:' + str(int(data[1][0]['image_id']))
    model = model.to(device)
    model_image = data[0][0]
    cv2_image = np.transpose(model_image.numpy()*255,(1, 2, 0)).astype(np.float32)
    cv2_image = cv2.cvtColor(cv2_image, cv2.COLOR_RGB2BGR).astype(np.float32)

    # add batch dimension
    model_image = torch.unsqueeze(model_image, 0)
    start_time = time.time()
    with torch.no_grad():
        outputs = model(model_image.to(device))
    end_time = time.time()
    # get the current fps
    fps = 1 / (end_time - start_time)
    # add `fps` to `total_fps`
    total_fps += fps
    # increment frame count
    frame_count += 1
    # load all detection to CPU for further operations
    outputs = [{k: v.to('cpu') for k, v in t.items()} for t in outputs]
    # carry further only if there's detected boxes
    if len(outputs[0]['boxes']) != 0:
        boxes = outputs[0]['boxes'].data.numpy()
        scores = outputs[0]['scores'].data.numpy()
        # filter out boxes according to `detection_threshold`
        boxes = boxes[scores >= detection_threshold].astype(np.int32)
        scores = np.round(scores[scores >= detection_threshold],2)
        draw_boxes = boxes.copy()


        # draw the bounding boxes and write the class name on top of it
        for j,box in enumerate(draw_boxes):
            cv2.rectangle(cv2_image,
                          (int(box[0]), int(box[1])),
                          (int(box[2]), int(box[3])),
                          color_inference, 2)
            cv2.putText(img=cv2_image, text="Crater",
                        org=(int(box[0]), int(box[1] - 5)),
                        fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale= 0.3,color= color_inference,
                        thickness=1, lineType=cv2.LINE_AA)
            cv2.putText(img=cv2_image, text=str(scores[j]),
                        org=(int(box[0]), int(box[1] + 8)),
                        fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale= 0.3,color= color_inference,
                        thickness=1, lineType=cv2.LINE_AA)

        # add boxes for labels
        for box in data[1][0]['boxes']:
            cv2.rectangle(cv2_image,
                          (int(box[0]), int(box[1])),
                          (int(box[2]), int(box[3])),
                          color_label, 2)
            cv2.putText(img=cv2_image, text="Label",
                        org=(int(box[0]), int(box[1] - 5)),
                        fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale= 0.3,color= color_label,
                        thickness=1, lineType=cv2.LINE_AA)


        # set size
        plt.figure(figsize=(10,10))
        plt.axis("off")

        # convert color from CV2 BGR back to RGB
        plt_image = cv2.cvtColor(cv2_image/255.0, cv2.COLOR_BGR2RGB)
        plt.imshow(plt_image)
        plt.show()
        cv2.imwrite(f"./results/{image_name}.jpg", cv2_image)
    print(f"Image {i + 1} done...")
    print('-' * 50)
print('TEST PREDICTIONS COMPLETE')

avg_fps = total_fps / frame_count
print(f"Average FPS: {avg_fps:.3f}")
Image 1 done...
--------------------------------------------------
Image 2 done...
--------------------------------------------------
Image 3 done...
--------------------------------------------------
Image 4 done...
--------------------------------------------------
Image 5 done...
--------------------------------------------------
Image 6 done...
--------------------------------------------------
Image 7 done...
--------------------------------------------------
Image 8 done...
--------------------------------------------------
Image 9 done...
--------------------------------------------------
Image 10 done...
--------------------------------------------------
Image 11 done...
--------------------------------------------------
Image 12 done...
--------------------------------------------------
Image 13 done...
--------------------------------------------------
Image 14 done...
--------------------------------------------------
Image 15 done...
--------------------------------------------------
Image 16 done...
--------------------------------------------------
Image 17 done...
--------------------------------------------------
Image 18 done...
--------------------------------------------------
Image 19 done...
--------------------------------------------------
TEST PREDICTIONS COMPLETE
Average FPS: 7.890

Estamos usando un treshold de 0.7, por eso los cuadrados que salen señalan aquellos sitios donde piensa que hay un 70% de probabilidad de encontrar un crater.

Los recuadros de color verde señala donde cree que hay crateres segun como hemos entrenado a nuestro modelo. Como hemos entrenado con pocas capas para asi disminuir el tiempo de espera, vemos que no señala del todo bien. Sin embargo, las etiquetas que son los recuadros azules se siguen manteniendo en el lugar correcto ya que son suepr especificas mostrando de manera correcta los crateres.

Esto es un error que tuvimos una de las primeras veces que tratamos de realizar este codigo, que los labels nos salian descuadrados, ya que le metimos una funcion de one epoch mal definida.